快速排序 簡單解析

2021-10-05 12:32:21 字數 925 閱讀 3236

如果使用插入排序將陣列按從小到大排序,在插入排序0的時候,需要依次判斷前移找到最前面的位置,這使得排序判斷成本增加。

快速排序則是對這種情況的一種優化排序,是氣泡排序的一種改進。取乙個中間標準點,將大於這個標準點的值和小於標準點的值進行分組並放置在這個標準點的左右兩側,然後按照順序遞迴排序左右兩組的資料,最後形成有序陣列。

**解析(直接選取的中間點為標準點):

public static void main(string args) ;

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

system.out.println(arrays.tostring(arr));

}public static void sort(int arr, int left, int right)

while (arr[r] > arr[pivot])

if (l >= r)

//交換左右兩個點資料

arr[l] = arr[l] + arr[r];

arr[r] = arr[l] - arr[r];

arr[l] = arr[l] - arr[r];

if (arr[l] == arr[pivot]) //如果找到相等值,索引r需要左移

r -= 1;

if (arr[r] == arr[pivot])//同理

l += 1;

}if (l == r)

if (r > left)//左遞迴

sort(arr, left, r);

if (l < right) //右遞迴

sort(arr, l, right);

}

快速排序解析

快速排序用到的知識點,遞迴,分制。思想,如果將數列要從小到大的排列,先取乙個數做為比較數a 一般取要數列或者拆開數列的第乙個數,也看個人習慣 先從右往左找比a小的資料,並交換資料。交換完資料後,在互動資料的位置從左往右找比a大的資料,找到後,再交換資料。這算是一輪結束。這一輪結束後,左索引會將陣列分...

簡單快速排序

最近,開始認真學習演算法,為了更好的督促自己學習,也請大家幫忙監督,所以列了出來,歡迎批評指正。第乙個是選擇排序 選擇排序的基本思想是 設有n個元素要排序,首先選擇最大的元素與第乙個元素交換,然後再對剩餘的n 1個元素進行類似處理,這樣重複n 1次後,即可將n個元素按由大到小的順序排列。若由小到大排...

快速排序演算法解析

一趟快速排序的演算法是 1 設定兩個變數i j,排序開始的時候 i 0,j n 1 2 以第乙個陣列元素作為關鍵資料,賦值給key,即key a 0 3 從j開始向前搜尋,即由後開始向前搜尋 j 找到第乙個小於key的值a j 將a j 和a i 互換 4 從i開始向後搜尋,即由前開始向後搜尋 i ...