快排 java實現

2021-06-29 08:59:53 字數 1450 閱讀 4154

快排思想:

1 、確定基準值,(一般是取第乙個)或者是取陣列的中間值

2 、從後面開始查詢第乙個小於基準值的數,j- -操作,用j來標記陣列下標;再從第二個開始,找到第乙個大於基準值的數,i++操作,用i來標記,.當滿足(i!=j)時,交換j和i下標對應的值,…,直到i==j時,1.基準值歸位,2.將舊基準值置最終的位置。(這倆步就是交換基準值和該基準值最終位置的值,注意先後順序),至此一次快排結束,然後遞迴執行基準值左邊的快排,基準值右邊的快排…..

1.經典款

private static void quicksort(int a,int left,int right)

int i,j,pivot;

i=left;j=right;

pivot= a[left];

while(i!=j)

if(i

while(i

<=pivot)

if(i

}a[i]=pivot;

quicksort(a,left,i-1);

quicksort(a,i+1,right);

}

2.變化款

public

class

testquicksort ;

quicksort(arr,0,arr.length-1);

system.out.println("排序後--");

print(arr);

}private

static

void

print(int arr)

system.out.println();

}/**

* 快排演算法

*@param arr

*@param i

*@param j

*/private

static

void

quicksort(int arr, int start, int end)

while(i//找到第乙個最大的

i++;

}if(i//先將新的基準值歸位

arr[start]=arr[i];//重新確定基準值

//確定此次快排(基準元素)的元素位置

arr[i]=pivot;//確定乙個元素的最後位置...

print(arr);

quicksort(arr,start,i-1);

quicksort(arr,i+1,end);

}public

static

void

swap(int arr, int i, int j)

}

經典款和變化款第一次快排的結果是不一樣的,但是基準元素的最終位置是一致的,只是交換順序不同罷了,經典款是一開始就交換了基準值,變化款是最後才交換基準值,不過思想是一樣的…我們只要掌握思想就可以了…分治…

python實現快排演算法 python快排演算法詳解

快排是python經典演算法之一。1 下面講解的是什麼是快排和快排的圖示。2 快排是一種解決排序問題的運算方法。3 快排的原理 在陣列中任意選擇乙個數字作為基準,用陣列的資料和基準資料進行比較,比基準數字打的數字的基準數字的右邊,比基準數字小的數字在基準數字的左邊,第一次排序之後分為比基準資料大或比...

快排簡單實現

沒事再寫下經典的快排 感覺順手多了 還是比較懶,wiki 介紹如下 快速排序是一種 分而治之 各個擊破 的觀念。快速排序使用分治法 divide and conquer 策略來把乙個序列 list 分為兩個子串行 sub lists 步驟為 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列...

python實現快排

學習python,隨便寫了下快排,如下 coding utf 8 快速排序演算法實現 import sys sys.setrecursionlimit 1000000 設定最大遞迴深度,這裡設定為一百萬 def kuaipai ii,jj,data list global s s 1 記錄遞迴的深度...