排序算法(四)快速排序(C++)
快速排序,从最低位和最高位开始。
#include <iostream.h>#include <stdio.h>using namespace std;int partition(int data[], int low, int high);void sort(int data[], int low, int high);void change(int data[], int low, int high);int partition(int data[], int low, int high){int i= low, j = high;int pivotKey = data[low];while(i<j){while(i<j && data[j]>=pivotKey){j--;}if(i<j){data[i] = data[j];i++;}while(i<j && data[i] < pivotKey){i++;}if(i<j){data[j] = data[i];j--;}}data[i] = pivotKey;return i;}void change(int data[], int low, int high){int temp;temp = data[high];data[high] = data[low];data[low] = temp;}void sort(int data[], int low, int high){if(low < high){int pivot = partition(data, low, high);sort(data, low, pivot-1);sort(data, pivot+1, high);}}int main(){int data[10] = {32,43,54,21,43,46,67,34,48,56};for(int i=0; i<10; i++){cout<<"data["<<i<<"]="<<data[i]<<endl;}sort(data, 0, 9);for(int i=0; i<10; i++){cout<<data[i]<<" "<<endl;}}