快速排序,古老的算法

来源:互联网 发布:flash软件打不开 编辑:程序博客网 时间:2024/06/01 18:53

排序,使用系统和自己的方法:

#include <stdlib.h>#include <direct.h>#include <string.h>#include <time.h>#include <iostream>#include <fstream>#include <vector>#include<algorithm>using namespace std;#define LENGTH 100000#define   MAXPATH   260int use_system_alg(int* arry){clock_t start_time,end_time;start_time = clock();sort(arry, arry + LENGTH);end_time = clock();cout<<end_time - start_time<<endl;return 0;}void qsort(int* arr, int low, int high){if (low >= high)return;int i = low;int j = high + 1;int pivot = arr[i];int temp;while (i < j) {for (i = i + 1; i < high; i++){if (arr[i] >= pivot){break;}}for (j = j - 1; j > low; j--){if (arr[j] <= pivot){break;}}if (i < j){temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}temp = arr[j];arr[j] = arr[low];arr[low] = temp;qsort(arr, low, j - 1);qsort(arr, i, high);}int use_my_alg(int* v_arry2){clock_t start_time1,end_time1;start_time1 = clock();qsort(v_arry2, 0, LENGTH - 1);end_time1 = clock();cout<<end_time1 - start_time1<<endl;return 0;}int main(){int* arry = (int*)calloc(1, LENGTH);int* arry2 = (int*)calloc(1, LENGTH);srand( (unsigned)time( NULL ) );vector<int> v_arry2;v_arry2.reserve(LENGTH);for(int i = 0; i < LENGTH; i++){v_arry2.push_back((int)(rand() * (LENGTH/(RAND_MAX + 1.0))) );//cout<<v_arry2.at(i);arry[i] = v_arry2.at(i);arry2[i] = v_arry2.at(i);}use_system_alg(arry2);for(int j = 1; j < LENGTH; j++){if(arry2[j] < arry2[j - 1]){cout<<"system_alg error!"<<endl;}}use_my_alg(arry);for(int j = 1; j < LENGTH; j++){if(arry[j] < arry[j - 1]){cout<<"my_alg error!"<<endl;}}return 0;}