【Algorithm】快排分割槽方法
單向掃描
基準數為最右邊
private static void quickSortLineryArray(int[] a, int start, int end) {
if(a.length == 0 || a.length == 1) {
return ;
}
int i = start;
int j = start; //j負責檢查小於key的
int key = a[end];
while(j < end){
if(a[j] < key) {
//每查到一個和i交換位置,i之前的位置都小於key
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
}
j++;
}
int tmp = a[i];
a[i] = a[end];
a[end] = tmp;
if(i > start)quickSortLineryArray(a, start, i-1);
if(i < end)quickSortLineryArray(a, i+1, end);
}
雙向掃描
基準數為最左邊(就要右邊指標先動),基準數在最右邊(就要左邊的指標先動)。否則會出現錯誤
左邊找比基準數(圖中為6)大的,右邊找比基準數小的(遞增)
省去若干步驟……
i=j之後就和基準數交換位置(也就是3和6交換位置)
void quickSort(int a[], int left, int right) {
if (left > right) return;
int i = left, j = right;
int key = a[right], temp;
while (i != j) {
//基準數在右邊,所以左邊指標先動
while (a[i] <= key && i < j) ++i;
while (a[j] >= key && i < j) --j;
if (i < j) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
a[right] = a[i];
a[i] = key;
quickSort(a, left, i - 1);
quickSort(a, i + 1, right);
}
相關文章
- rebuild分割槽表分割槽索引的方法Rebuild索引
- Linux 根分割槽快滿了,這個方法快速定位!Linux
- linux的分割槽方法Linux
- MapReduce框架Partitioner分割槽方法框架
- 第三章 :查詢與排序-------3.5快排之三指標分割槽法排序指標
- 調整分割槽後分割槽不見的資料找到方法
- 利用排程任務定時刪除分割槽
- SQL Server大分割槽表沒有空分割槽的情況下如何擴充套件分割槽的方法SQLServer套件
- 第三章 :查詢與排序-------3.4快排之雙向掃描分割槽法排序
- oracle增加分割槽的方法Oracle
- 如何查詢分割槽表的分割槽及子分割槽
- 全面學習分割槽表及分割槽索引(10)--交換分割槽索引
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- Linux主分割槽,擴充套件分割槽,邏輯分割槽Linux套件
- Oracle分割槽表及分割槽索引Oracle索引
- INTERVAL分割槽表鎖分割槽操作
- Liunx新增新硬碟和分割槽方法硬碟
- (3) MySQL分割槽表使用方法MySql
- vmware server 增加根分割槽的方法Server
- oracle分割槽及分割槽索引partition_partition index_維護(五)_快捷方法Oracle索引Index
- Oracle帶區域性分割槽索引的分割槽表刪除舊分割槽新增新分割槽Oracle索引
- 全面學習分割槽表及分割槽索引(13)--分隔表分割槽索引
- 使用split對分割槽表再分割槽
- 簡單ORACLE分割槽表、分割槽索引Oracle索引
- 分割槽表及分割槽索引建立示例索引
- oracle分割槽表和分割槽表exchangeOracle
- win10怎麼合併分割槽_win10合併分割槽的方法Win10
- win10系統下將邏輯分割槽改為主分割槽的方法Win10
- 全面學習分割槽表及分割槽索引(9)--刪除表分割槽索引
- 全面學習分割槽表及分割槽索引(11)--合併表分割槽索引
- 全面學習分割槽表及分割槽索引(12)--修改list表分割槽索引
- Linux主分割槽,擴充套件分割槽,邏輯分割槽[final]Linux套件
- 學習筆記】分割槽表和分割槽索引——新增表分割槽(二)筆記索引
- 【學習筆記】分割槽表和分割槽索引——管理索引分割槽(四)筆記索引
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- 全面學習分割槽表及分割槽索引(17)--其它索引分割槽管理操作索引
- win10增加分割槽的方法_win10怎麼給磁碟新增分割槽Win10