直接插入排序
#include <stdio.h>void insert_sort(int arr[], int n)
{int i;int j;int tmp;for (i = 1; i < n; i++){tmp = arr[i];j = i - 1;// 将要插入的元素与数组中的元素比较(从后向前比) while (j >= 0 && arr[j] > tmp){arr[j + 1] = arr[j];j--;} // end of whilearr[j + 1] = tmp; // 不满足以上条件,即待插入元素tmp比数组中的某个元素大,插在它后面} // end of for
}int main()
{int arr[] = {5, 2, 8, 9, 1, 3};int n = sizeof(arr) / sizeof(arr[0]);printf("Before sorting: ");for (int i = 0; i < n; i++){printf("%d ", arr[i]);}insert_sort(arr, n);printf("\nAfter sorting: ");for (int i = 0; i < n; i++){printf("%d ", arr[i]);}return 0;
}