[算法] 6 种排序的重写,很熟练!

来源:互联网 发布:手机上清除数据 编辑:程序博客网 时间:2024/06/06 03:40
#include <iostream>#include <string>#include <cstring>#include <cstdlib>#include <cstdio>#include <cmath>#include <vector>#include <stack>#include <deque>#include <queue>#include <bitset>#include <list>#include <map>#include <set>#include <iterator>#include <algorithm>#include <functional>#include <utility>#include <sstream>#include <climits>#include <cassert>#define BUG puts("here!!!");using namespace std; // 8 5 4 9 2 3 6void heapify(int *a, int i, int size) {int ls = 2*i, rs = 2*i + 1;int large = i;if(a[ls] > a[i]) large = ls;if(a[rs] > a[large]) large = rs;if(large != i) {swap(a[large], a[i]);heapify(a, large, size);}}void buildHeap(int *a, int size) {for(int i = size/2; i > 0; i++) {heapify(a, i, size);}}void heapSort(int *a, int size) {buildHeap(a, size);int len = size;for(int i = len; i > 0; i--) {swap(a[len], a[1]);len--;heapify(a, 1, len);}}void quickSort(int *a, int left, int right) {if(left < right) {int l = left, r = right, x = a[l];while(1) {while(l < r && a[r] >= x) r--;while(l < r && a[l] <= x) l++;if(l >= r) break;swap(a[l], a[r]);}swap(a[left], a[l]);quickSort(a, left, l-1);quickSort(a, l+1, right);}}void mergeSort(int *a, int l, int r) {if(l >= r) return;int mid = (l+r) >> 1;mergeSort(a, l, mid);mergeSort(a, mid+1, r);int *arr = new int[r-l+1];int k = 0;int i = l, j = mid+1;while(i <= mid && j <= r) {if(a[i] <= a[j]) arr[k++] = a[i];else arr[k++] = a[j];}while(i <= mid) arr[k++] = a[i++];while(j <= r) arr[k++] = a[j++];for(int i = l; i <= r; i++) {a[i] = arr[i-l];}delete []arr;}void insertSort(int *a, int len) {int j;for(int i = 1; i < len; i++) {int temp = a[i];for(j = i-1; j >= 0 && temp < a[j]; j--) {a[j+1] = a[j];}a[j+1] = temp;}}void bubbleSort(int *a, int len) {for(int i = 1; i < len; i++) {for(int j = 0; j < len-i; j++) {if(a[j] > a[j+1]) swap(a[j], a[j+1]);}}}void selectSort(int *a, int len) {for(int i = 0; i < len-1; i++) {int k = i;for(int j = i+1; j < len; i++) {if(a[j] < a[k]) k = j;}swap(a[k], a[i]);}}int main() {return 0;}

原创粉丝点击