代码如下 #include <iostream> using namespace std; ///常用排序算法实现/// //插入排序 void InsertSort(int array[], int len) { for (int j = 1; j < len; ++j) { if (array[j] < array[j - 1]) // 小于则插入 { int insert = array[j]; int i = j -1 ; while(i >= 0 && insert < array[i] ) --i; //找插入的位置 //移动元素 for (int k = j -1 ; k > i; --k) { array[k + 1] = array[k]; } array[i+1] = insert; } } } //冒泡排序 void BubbSort(int array[], int len) { for (int i = 1; i < len; ++i) { for (int j = 0; j < len - i; ++j) { if (array[j] > array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } } } //简单选择排序 void SimpleSelectSort(int array[], int len) { for (int i = 0; i < len; ++i) { int k = i; for (int j = i + 1; j < len; ++j) { if (array[j] < array[i]) { k = j; } } if (i != k) { int temp = array[i]; array[i] = array[k]; array[k] = temp; } } } //快速排序 int Partion(int array[], int left, int right) { int pivot = array[left]; while (left < right) { while (left < right && array[right] >= pivot ) --right; array[left] = array[right]; while (left < right && array[left] <= pivot) ++ left; array[right] = array[left]; } array[left] = pivot; return left; } void QucikSort(int array[], int left, int right) { if (left < right) //区间大于一 { int PartionIndex = Partion(array, left, right); QucikSort(array, left, PartionIndex - 1); QucikSort(array, PartionIndex + 1, right); } } ///堆排序 void HeapAdjust(int array[], int first,int len) //建立最大堆 { int i; if (first == 0) { i = 1; } else i = 2*first; for (; i < len; i *= 2) { if (i < len && array[i]<array[i + 1]) ++i; if (array[first] < array[i]) { int Temp = array[first]; array[first] = array[i]; array[i] = Temp; first = i; } } } void HeapSort(int array[], int len) { for (int i = (len - 1)/2; i >= 0; --i) { HeapAdjust(array, i, len - 1); } //然后每次让最后一个和堆顶交换 注意下标 for(int i=len-1;i>=0;--i) { int temp=array[i]; array[i]=array[0]; array[0]=temp; HeapAdjust(array,0,i-1); //然后把剩下的继续构成堆 } } int main() { int* p = new int[12]; p[0] = 1; p[1] = 5; p[2] = 5; p[3] = 6; p[4] = 15; p[5] = 3; p[6] = 12; //InsertSort(p, 6); //BubbSort(p, 6); //SimpleSelectSort(p, 6); //QucikSort(p, 0, 5); HeapSort(p, 7); for (int i = 0; i < 7; ++i) { cout<<p[i]<<"/t"; } return 0; }