插入排序
动图

代码
方法一
#include <stdio.h>
void insertSort(int *arr, int n);
int main() {
int arr[10] = {3, 29, 51, 21, 19, 53, 71, 1, 82, 99};
int i;
insertSort(arr, 10);
for (i = 0; i < 10; i++)
printf("%4d", arr[i]);
return 0;
}
void insertSort(int arr[], int n) {
int i,j,key;
for(i=1;i<n;i++){
j=i-1;
key=arr[i];
while(j>=0&&arr[j]>key){
arr[j+1]=arr[j];
j--;
}
arr[j+1]=key;
}
}
方法二
#include <stdio.h>
int main()
{
int arr[6] = {43, 78, 54, 20, 34, 23};
int i, j, k, t;
for (i = 1; i < 6; i++) {
for (j = 0; j < i; j++) {
if (arr[j] < arr[i])
break;
}
t = arr[i];
for (k = i - 1; k >= j; k--) {
arr[k + 1] = arr[k];
}
arr[j] = t;
}
for (i = 0; i < 6; i++) {
printf("%5d", arr[i]);
}
printf("\n");
return 0;
}