關於排序(快速排序)

2022-07-16 01:27:15 字數 949 閱讀 6924

package com.sw.demo.test;

/** * 關於快速排序

* @author song

* */

public class testquicksort ;

quicksort(arr,0,arr.length-1); // 快速排序

for (int i = 0; i < arr.length; i++)

}/**

* 快速排序

* @param arr

* @param low

* @param high

*/public static void quicksort(int arr, int low , int high)

if((high - low) == 1)

return ;

} int pivot = arr[low]; // 任取乙個數字做為中間數字(一般,這裡也是去第乙個數字)

int left = low +1; // 定義左滑塊,當前的游標

int right = high; // 定義右滑塊,當前的游標

while(left < right)

left++; // 如果找不到,left++,一直向後找

}while(left <= right && right > low)

right--; // 如果找不到,right++,一直向前找

}if(left < right)

swap(arr,low,right); // 交換中間數字

quicksort(arr,low,right); // 排序前面陣列

quicksort(arr,right+1,high); // 排序後邊陣列}}

// 掉位方法

public static void swap(int array, int i, int j)

}

關於快速排序

int quicksort int array,int left,int right if left j quicksort array,left,j if i right quicksort array,i,right return 0 注意快速排序是通過遞迴完成的,也就不難理解其運用的思想主要是...

關於快速排序,歸併排序,堆排序

1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...

排序 快速排序

快速排序時實踐中最快的一直排序,平均時間是0 nlogn 最壞的情況是o n2 但是很容易將這種情況避免 空間複雜度 o n lgn 不穩定。快速排序時基於分治模式處理的,對乙個典型子陣列a p.r 排序的分治過程為三個步驟 1.分解 a p.r 被劃分為倆個 可能空 的子陣列a p q 1 和a ...