一文搞懂插入排序 (C语言)

#include

void insertionSort(int a[],int len){
     
	for(int i=1,j;i<len;i++){
     
		int key = a[i];
		for(j=i-1;j>=0&&key<a[j];j--){
     
			a[j+1] = a[j];
		}
		a[j+1] = key;//记得加1,因为j相比边界多减了一个
	}
}
//分开的写法,可能更便于理解
//void insert(int a[],int n){
     
//	int key = a[n];
//	int i = n;
//	while(a[i-1] > key){
     
//		a[i] = a[i-1];
//		i--;
//		if(i == 0)
//			break;
//	}
//	a[i] = key;
//}
//
//void insertionSort(int a[],int len){
     
//	for(int i=1;i
//		insert(a,i);
//}
void print (int a[],int len){
     
	for(int i=0;i<len;i++)
		printf("%d ",a[i]);
	putchar('\n');
}

main(){
     
	
	int a[]={
     1,3,5,9,2,4,10,8,7};
	int len = sizeof(a)/sizeof(int);
	insertionSort(a,len);
	print(a,len);
	
}

你可能感兴趣的:(排序算法,算法问题,c语言,算法,排序算法,插入排序,数据结构)