#include <stdio.h> #include <stdlib.h> //选择排序 //基本思想:通过n-i次关键字的比较,从n-i+1个记录中选择最小的记录,并和第i(1=<i<=n)个记录交换 //时间复杂度:O(n^2)但是交换次数明显比冒泡排序少 void SelectSort(int k[], int n) { int i, j, tmp, min; for (i = 0; i < n - 1; i++) { min = i; for (j = i+1; j < n; j++) { if (k[j] < k[min]) { min = j; } } if (min != i) { tmp = k[i]; k[i] = k[min]; k[min] = tmp; } } } //插入排序 //基本思想:将一个记录插入到已经拍好序的有序表中,从而得到一个新的,记录数增加1的有序表 //时间复杂度:,O(n^2) void InsertSort(int k[], int n) { int i, j, tmp; for (i = 1; i < n; i++) { if (k[i] < k[i - 1]) { tmp = k[i]; for (j = i - 1; (k[j] > tmp)&&(j >= 0); j--) { k[j + 1] = k[j]; } k[j + 1] = tmp; } } } void print(int a[], int num) { int i = 0; for (i = 0; i < num; i++) { printf("%d ", a[i]); } printf(" "); } int main() { int a[10] = { 2, 3, 56, 1, 4, 7, 8, 94, 3, 10 }; InsertSort(a, 10); print(a, 10); return system("pause"); }