代码思路:在一组数中从第二位数和前面的第一位数比较,若1 >2则交换数据值,否则不变,依次继续,第n为数就和前面n - 1位数逐个比较大小,最终组成一组从小到大的有序数。
代码:
方法一:
int insertionSort(int a[],int len){
int i,j,k,num,temp;
for(i = 2;i < len;i++){
a[0] = a[i];
j = i - 1;
while(a[i] < a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
j--;
}
a[j + 1] = a[0];
printf("\n");
printf("i = %d ",i);
for(k = 0;k < len;k++){
printf("%d ",a[k]);
}
}
printf("\n");
printf("排完序后的数据是:");
for(num = 0;num < len;num++){
printf("%d ",a[num]);
}
printf("\n");
return 1;
}
方法二:
int insertionSort(int a[],int len){
int i,j,k,l,temp,num;
for(i = 1;i < len;i++){
printf("i = %d:",i);
for(k = 0;k < len;k++){
printf("%d ",a[k]);
}
printf("\n");
for(j = 0;j < i;j++){
if(a[i] < a[j]){
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
//printf("j = %d:",j);
//for(l = 0;l < len;l++){
// printf("%d ",a[l]);
// }
// printf("\n");
}
}
printf("排完序后的数据是:");
for(num = 0;num < len;num++){
printf("%d ",a[num]);
}
printf("\n");
return 1;
}