问题:对一个序列从小到大排序
思想:将序列分有序、无序两部分,每次将一个待排序元素插入有序部分
#include<stdio.h>
void insertion_sort(int *sz,int n);
int main(){
int n;
int i;
printf("请输入要升序排序的序列个数\n");
scanf("%d",&n);
int sz[n];
for(i=0;i<n;i++){
scanf("%d",&sz[i]);
}
insertion_sort(sz,n);
printf("\n排序后的数组\n");
for(i=0;i<n;i++){
printf("%d\t",sz[i]);
}
return 0;
}
void insertion_sort(int *sz,int n){
int i,j,k;
for(i=1;i<n;i++){
k=sz[i];
j=i-1;
while(j>=0){
if(sz[j]>k){
sz[j+1]=sz[j];
j=j-1;
}else{
break;
}
}
sz[j+1]=k;
}
}
运行结果