陣列排序 快速排序

2021-08-18 22:58:55 字數 1218 閱讀 8623

陣列排序——快速排序

1、陣列排序之快速排序

一趟快速排序的演算法是:  

1)設定兩個變數i、j,排序開始的時候:i=0,j=n-1;

2)以第乙個陣列元素作為關鍵資料,賦值給key,即 key=a[0];

3)從j開始向前搜尋,即由後開始向前搜尋(j=j-1即j--),找到第乙個小於key的值a[j],a[i]與a[j]交換;

4)從i開始向後搜尋,即由前開始向後搜尋(i=i+1即i++),找到第乙個大於key的a[i],a[i]與a[j]交換;

5)重複第3、4、5步,直到 i=j;

(3, 4 步是在程式中沒找到時候j=j-1,i=i+1,直至找到為止。找到並交換的時候i、 j指標位置不變。另外,當i=j這過程一定正好是i+或j-完成的最後令迴圈結束。)

2、**演示

package cn.itcast_01;

public class arraysort_quicksort ;

// int arr = ;

// int arr = {};

system.out.println("排序前:");

printarray(arr);

// 呼叫氣泡排序演算法

int n = arr.length;

quicksort(arr, 0, n - 1);

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

printarray(arr);

} // 快速排序法 quicksort()+partition()

// 一次劃分演算法

public static int partition(int r, int first, int end)

while (i < j && r[i] < r[j]) // 左側掃瞄

i++;

if (i < j)

} return i;

} // 快速排序遞迴演算法

public static void quicksort(int r, int first, int end)

} // 陣列遍歷

public static void printarray(int arr) else

} system.out.println("]");

}}

陣列快速排序

1.如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,也就是是按照字元編碼的順序進行排序。var arr 9 5,3 10,23 4,43 var newarr arr.sort console.log newarr 10,23,3,4,43,5,9 也就是會以首數字為準進行排序 字...

陣列快速排序

1.快速排序,就是首先找乙個基準,記作a,並且將陣列中小於a的元素全部排在a的左邊,並且將陣列中比a大的元素全部排在a的右邊 文中提到的 小於 大於 可以自行定義 經過這樣的排序,我們不用保證在a的左邊和右邊的元素維持著一種順序,只要全滿足小於a 和大於a即可。這是我們下一步要進行的工作 2.將a左...

陣列氣泡排序 和 快速排序

1 氣泡排序 隨便從陣列中拿一位數和後一位比較,把小的那一位放到前面,大的放在後面,簡單來說就是交換它們的位置,如此反覆的交換位置就可以得到排序的效果。var arr 1,10,9,7,8,5,6,3,4,2 function sort arr return arr sort arr 1,2,3,4...