對於包含n個數的輸入陣列來說,快速排序是一種最壞情況時間複雜度為o(n^2)的排序演算法。雖然最壞情況時間複雜度很差,但是快速排序通常是實際排序應用中最好的選擇,因為它的平均效能非常好:它的期望時間複雜度是o(nlgn),而且o(nlgn)中隱含的常數因子非常小,另外他還能夠進行原址排序,甚至在虛擬環境中也能很好地工作。下面是快速排序的c++實現**及執行結果:
/*
對sum個數進行快速排序
*/#include #include using namespace std;
const int sum = 10;
int partion(int a, int p, int r)
}temp = a[i + 1];
a[i + 1] = a[r];
a[r] = temp;
return i + 1;
}void quicksort(int a, int p, int r)
}void print(int a, int s)
}int main()
cout << "rand numbers: " << endl;
print(a, sum);
quicksort(a, 1, sum);
cout << "quicksort numbers: " << endl;
print(a, sum);
return 0;
}
執行結果如下:
C C 演算法 快速排序
氣泡排序的執行效率太低,因為每次比較相鄰的兩個數,所以時間複雜度為o n 花費的時間太長,所以為了更加的節省時間,提高程式的執行速率,我們可以採用快速排序。對於乙個數集,先把第乙個數當作基準數,然後分別從最右端和最左端向另一方向進行搜尋,以從小到大的順序為例 從右向左搜尋的,遇到比基準數小的與從左向...
C C 實現快速排序
file gm qsort.h brief 實現快速排序 author don hao date 2011 8 21 22 31 06 version email hao.limin gmail.com company modification write modifications here.if...
C C 實現快速排序
1.思想就是遞迴的分而治之,每次遞迴就做兩件事 分段,對這個段依照pivot進行粗略的排序 2.對於分好的段,求出其中位數為pivot,然後小於pivot的全都放到這個段的左邊,大於pivot的全都放到這個段的右邊,下面是實現 include include template t class qui...