简单选择排序:
代码如下:
#include <iostream>
using namespace std;void SelectSort(int *a, int len)
{//数组下标从0开始for (int i = 0; i < len; i++){int k = i;for (int j = i + 1; j < len; j++)if (a[j] < a[k]) k = j;if (k != i){int temp = a[i];a[i] = a[k];a[k] = temp;}}
}int main()
{int a[] = { 21,3,24,24,23,42,4,235,27878,46 };SelectSort(a, 10);for (int i = 0; i < 10; i++) cout << a[i] << " ";cout << endl;return 0;
}
堆排序:
代码如下:
#include <iostream>
using namespace std;void HeapAdjust(int *a, int s, int m)
{int rc = a[s];for (int i = 2 * s; i <= m; i *= 2){if (i < m && a[i] < a[i + 1]) i++;if (rc > a[i]) break;a[s] = a[i];s = i;}a[s] = rc;
}void CreatHeap(int *a, int n)
{for (int i = n / 2; i > 0; i--) HeapAdjust(a, i, n);
}void HeapSort(int *a, int n)
{//数组下标从1开始CreatHeap(a, n);for (int i = n; i > 1; i--){int temp = a[1];a[1] = a[i];a[i] = temp;HeapAdjust(a, 1, i - 1);}
}int main()
{int a[] = { 0,1314,23,5,35,234,2,4,24,124,214 };HeapSort(a, 10);for (int i = 1; i <= 10; i++) cout << a[i] << " ";cout << endl;return 0;
}