1.i =left; j =right; 找乙個基準數(隨意,這裡不妨找a[left]=a[i]),將其挖出。
2.j–由後向前找比它小的數,找到後挖出此數填前乙個坑a[i]中。
3.i++由前向後找比它大的數,找到後也挖出此數填到前乙個坑a[j]中。
4.重複2,3步,直到i==j,將基準數填入a[i]中。
#include#includeusing namespace std;
void quick(int a,int left,int right)
{ if(left>=right)
return;
int i=left,j=right,key=a[left];
while(i=key)
j--;
if(i1.記位於列表中間的數為mid
2.大於mid的放入greater列表
3.小於mid的放入less列表
4.遞迴greater和less列表
def quick(arr):
if(len(arr)<2):
return arr
mid=arr[len(arr)//2]
less,greater=,
arr.remove(mid)
for num in arr:
if(num>mid):
else:
return quick(less)+[mid]+quick(greater)
arr=[1,2,5,5,5,5,31,4]
arr=quick(arr)
print(' '.join([str(i)for i in arr]))
快排 堆排序
快速排序主要運用了二分的思想,每次選擇乙個基準元素,比基準元素打的元素都放在基準元素前面,比基準元素小的元素都放在基準元素後面,這樣不斷遞迴細分,完成排序。void quicksort int a,int l,int r if ia i a j i while ia i temp if ia j a...
排序演算法 快排
今天聊聊排序演算法,排序演算法平時也會用到,有很多比如,冒泡,快排,選擇,歸併排序等 今天就聊一聊快速排序演算法排序演算法的乙個宗旨就是經過一趟排序,何為一趟排序呢?就是遍歷完一次陣列,陣列中的一部分資料比另外一部分的資料都要小 當然這兩部分資料內部仍然是無序的,然後我們再對這兩部分資料分別進行排序...
排序總結 快排
快速排序是最常用的排序演算法,基本思想是分治。隨機找乙個分割數,把比他小的數放他左邊,比他大的數放他右邊。對左邊的數和右邊的數再分別重複以上操作。void qsort int arr,int low,int high 其中,劃分函式partition是關鍵。該函式有兩個作用,首先是根據中心點對陣列進...