代码如下
#include <stdio.h>
#include <stdlib.h>
int InsertSort(int S[], int n){
int i, j, key;
for(i = 1 ;i < n ;i++){
if(S[i] < S[i-1]){ //若S[i]关键字小于前驱
key = S[i]; //用key暂存A[i]
for(j = i-1 ;j >= 0 ;j--){ //检查所有前面已排好序的元素且
if(S[j] > key) //如果s[j]大于key
S[j+1] = S[j]; //将key元素向后挪
else //如果s[j]小于于key
break; //跳出循环
}
S[j+1] = key; //将关键值插入到指定位置
}
}
return 1;
}
int main(){
int n;
printf("请输要排序数的个数:");
scanf("%d", &n);
int S[n];
printf("请输入要排序的数,使用空格隔开:");
for (int i = 0; i < n; i++){
scanf ("%d", &S[i]);
}
if (InsertSort(S, n)){
printf("排序成功:");
for (int i = 0; i < n; i++)
{
printf("%d ",S[i]);
}
printf("\n");
}
system("pause");
}
运行结果如下
如有错误,请指正。