插入排序

本文介绍了插入排序的工作机制,通过将元素与已排序部分逐一比较并找到合适位置插入,实现序列从无序到有序的转变。插入排序从右往左进行比较,每次选择一个元素,与已排序的部分进行逐个比较并找到正确位置插入,以此类推,最终完成排序过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

插入算法到底是怎么样的呢?比如有十个人从左往右无序的拍着,现在要你按身高从低到高排序,你会怎么排序呢?
首先第二个人和第一个人比较,如果第二个人比第一个矮,那么他们互换位置,否则原地不动,此时前两个人就排序好了,然后第三个人再与前面两个人比较,第三人站出来,看看前面两人相比,哪个位置中自己比左边的高比右边的矮,然后就插进去,如果不是,就不动。,接下来就是这样排序。

那么怎么找到比左边高比右边矮的那个位置呢?因为左边都是已经排好了的,所以依次与左边的比较,直到运到一个比他矮的,那么这个位置就是比左边高比右边矮的位置。如果没找到,那么他就是最矮的那个,那么他排在最左边,那么怎么插入呢?因为每一个与左边一个一个比较的那个人都是先站出来,所以他的那个位置是空的。这个时候在找到比他矮的那个人之前,每比完一个,与他进行比较的那个人就往右挪一个位置,然后他就可以插进去了,所以在程序中要先用一个变量保存这个“站出来”的数

#include<stdio.h>
int main(void)
{
	int i,j;
	int temp; // 用于存站出来的数
	int a[] = {900, 2, 3, -58, 34, 76, 32, 43, 56, -70, 35, -234, 532, 543, 2500};
	int n = sizeof(a) / sizeof(a[0]);
	for(i=1; i<n; i++)
	{
		temp = a[i]; // 
		j = i-1;// 与他前一个数比较
		while(j>=0 && (a[j]>temp)) // 与左边所有人都比完了或者找到一个比他矮的为止
		{
			a[j+1] = a[j]; // 与他比完后,比他高的
博客
v8worker
05-08 2955
05-06 2940
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值