快速排序演算法QuickSort

2021-05-28 08:55:53 字數 1028 閱讀 2525

// quicksort.cpp : 定義控制台應用程式的入口點。

//快速排序演算法實現

/*設要排序的陣列是a[0]……a[n-1],首先任意選取乙個資料(通常選用第乙個資料)作為關鍵資料,

然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。

然後,對前面部分比它小的數繼續進行快速排序;也對後面部分比它大的數繼續進行快速排序。

值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。

*/#include "stdafx.h"

#include using namespace std;

void quicksort(int *a,int low,int high)

; int key = a[low];//以a[low]為樞紐值、關鍵資料

int l=low;

int h =high;

if(low>=high)

return;

while(l < h)

a[l] = a[h];

while(l < h && a[l]<= key )

a[h] = a[l];

} a[l]=key;//放置樞紐值

//分別對左邊、右邊排序

quicksort(a,low,l-1);

quicksort(a,l+1,high);

}int _tmain(int argc, _tchar* argv)

; 把比關鍵資料小的放在前面,比關鍵資料大的放在後面

//int key = a[0];

//int l = 0,h = 24;

//while(l < h)

// //a[l] = key;

quicksort(a,0,24);

for (int i = 0; i<25;i++)

system("pause");

return 0;

}

演算法 快速排序 quick sort

在前面介紹的排序演算法中,最快的排序演算法為歸併排序,但是歸併排序有乙個缺陷就是排序過程中需要o n 的額外空間。本文介紹的快速排序演算法時一種原地排序演算法,所需的額外空間複雜度為o 1 演算法介紹 快速排序其實一種根據需找某個元素的具體位置進行排序的方法。比如所存在如下陣列 選擇第乙個元素5,找...

演算法 快速排序(Quick Sort)

演算法定義 目前學習是五種排序 冒泡 插入 選擇 合併 快速 中,快速排序是最讓我喜歡的演算法 因為我想不到 其定義如下 演算法舉例 5,4,3,2,1 5,4,3,2,1 4,5,3,2,1 1,5,3,2,4 1,4,3,2,5 1,2,3,4,5 演算法實現 1 using system 2u...

排序演算法 快速排序(QuickSort)

快速排序演算法又稱劃分交換排序 partition exchange sort 最早由東尼 霍爾 c.a.r.hoare 圖靈獎得主於1960年提出的。常見的排序演算法大概七八種,其中快速排序是使用很廣泛 速度也較快的一種演算法,其名 快速 就能看出它的特點。快速排序採用了 分治法 策略,把乙個序列...