插入排序,其实我们可以理解简单点:类似一个序列是排好序的,我们要向其中插入一个数,并且保证插入后的序列依然是排好序的。
好那我们拿数组array[6]={4,3,5,1,9,6}来说,要排好这个序列具体应该是这样的:把第一个数当作是排好序的,从第二个数开始看看前面有没有合适位置插入(就是比较下大小,小的交换放前面),然后依次往后。最后就排好了。
#include<stdio.h>
void printArray(int array[],int length){
for(int i=0;i<length;i++){
printf("%d",array[i]);
}
printf("\n");
}
void insertSort(int array[],int length){
//外层循环,从第二个元素开始比较,比较从0~前一个元素间有没有合适位置插入
for(int i=1;i<length;i++){
for(int j=0;j<i;j++){//开始比较
if(array[i]<array[j]){
int temp=array[i];
for(int k=i-1;k>=j;k--){
array[k+1]=array[k];
}
array[j]=temp;
}
}
printArray(array,length);
}
}
int main(){
int array[6]={4,3,5,1,9,6};
printArray(array,6);
insertSort(array,6);
return 0;
}