【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);
}
相關文章
- Linux 根分割槽快滿了,這個方法快速定位!Linux
- linux的分割槽方法Linux
- 調整分割槽後分割槽不見的資料找到方法
- SQL Server大分割槽表沒有空分割槽的情況下如何擴充套件分割槽的方法SQLServer套件
- 第三章 :查詢與排序-------3.5快排之三指標分割槽法排序指標
- 第三章 :查詢與排序-------3.4快排之雙向掃描分割槽法排序
- Linux分割槽方案、分割槽建議Linux
- (3) MySQL分割槽表使用方法MySql
- 【Linux】分割槽向左擴容的方法Linux
- Liunx新增新硬碟和分割槽方法硬碟
- 增加表分割槽時,為local分割槽索引指定不同表空間的方法索引
- oracle分割槽表和分割槽表exchangeOracle
- PostgreSQL/LightDB 分割槽表之分割槽裁剪SQL
- Linux 分割槽擴容(根分割槽擴容,SWAP 分割槽擴容,掛載新分割槽為目錄)Linux
- win10系統下將邏輯分割槽改為主分割槽的方法Win10
- win10怎麼合併分割槽_win10合併分割槽的方法Win10
- Oracle分割槽表基礎運維-07增加分割槽(2 HASH分割槽)Oracle運維
- oracle分割槽表和非分割槽表exchangeOracle
- 非分割槽錶轉換成分割槽表
- [oracle] expdp 匯出分割槽表的分割槽Oracle
- win10增加分割槽的方法_win10怎麼給磁碟新增分割槽Win10
- 3tb硬碟怎麼分割槽_利用DiskGenius給3tb硬碟分割槽的方法硬碟
- windows11怎麼分割槽硬碟 win11硬碟分割槽大小方法介紹Windows硬碟
- Oracle分割槽表基礎運維-07增加分割槽(1範圍分割槽)Oracle運維
- openGauss 分割槽
- mysql 分割槽MySql
- 分割槽Partition
- lvs 分割槽
- Kafka 分割槽Kafka
- Hive的靜態分割槽與動態分割槽Hive
- Linux 新增LVM分割槽及LVM分割槽擴容LinuxLVM
- MySql資料分割槽操作之新增分割槽操作MySql
- Oracle分割槽表基礎運維-07增加分割槽(3列表分割槽)Oracle運維
- Oracle12c:建立主分割槽、子分割槽,實現自動分割槽插入效果Oracle
- win10只有c盤怎麼分割槽 win10c盤分割槽的方法Win10
- 【Linux】MBR磁碟分割槽表只能有四個分割槽?Linux
- PG的非分割槽表線上轉分割槽表
- 理解MySQL分割槽MySql