陣列排序——快速排序
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...