快速排序及其優化

2021-05-31 22:53:06 字數 1823 閱讀 7151

#include #include //呼叫c++自帶sort

#include #include #include using namespace std;

#define max 1000000

#define k 12

#ifdef _debug

#define new new(_normal_block, __file__, __line__)

#endif // _debug

// memory leak check

inline void enablememcheck()

//插入排序宣告

void insertsort(int s,int n);

int selectmid(int a);

//劃分函式

int partion(int a,int p,int r)**/

else

}}int main()

cout

large_integer listart;

large_integer liend;

queryperformancefrequency(&lifrequency); // get clock frequency

//呼叫優化過的quicksort

queryperformancecounter(&listart); // time start

betterquick(arr, 0, max-1);

queryperformancecounter(&liend); // time end

cout << "after bettersort(" <<

(liend.quadpart-listart.quadpart)*1000000/lifrequency.quadpart

<< "μs): ";

//for(int i=0; icout << endl;

cout

queryperformancecounter(&listart); // time start

quicksort(arr1,0,max-1);

queryperformancecounter(&liend); // time end

cout << "the quick sort method takes :" <<

(liend.quadpart-listart.quadpart)*1000000/lifrequency.quadpart

<< "μs): ";

//for(int i=0; icout << endl;

//呼叫c++自帶的sort函式

//queryperformancecounter(&listart); // time start

//std::sort(arr2,arr1+max);

//queryperformancecounter(&liend); // time end

//cout << "the system sort method takes :" <<

//(liend.quadpart-listart.quadpart)*1000000/lifrequency.quadpart

//<< "μs): ";

//for(int i=0; icout << endl;

delete arr;

delete arr1;

delete arr2;

system("pause");

return 0;

}

快速排序及其優化

快速排序是比較經典 常用的演算法,下面簡要介紹其思路。對於乙個陣列,選取某個元素作為切分元素 比如第乙個元素 然後把比這個元素小的都放到它前面,比這個元素大的都放到它後面,這樣切分元素的最終位置就確定了,並且陣列被劃分為兩個子陣列。然後再用同樣的方法分別對子陣列進行排序,最終整個陣列將變成有序的。這...

快速排序及其優化

package com.zc.algorithm public class quicksort 如果不大於,則把右邊的數賦值給左邊 arr left arr right 如果左邊的數小於基數,則向右移動 while left arr right 把最大值放在陣列的末尾 if arr mid arr ...

排序 快速排序及其優化

在排序中交換數字,達到排序的目的 由於 是c語言寫的,所以需要給出交換函式 如果是c 那麼就直接用交換函式 void swap int left,int right 先標記基準值 這裡先取最後乙個元素為基準值,記錄起來 之後定義兩個指標,然後前後遍歷,找到比基準值大的或者小的的元素的位置,然後進行標...