我們先來舉列子了解一下快速排序:
如圖,我們以隊伍第乙個元素為基準,然後我們從後面找比基準大的值後,將他的值
放到基準的位置(注意 原位置還是他的值)
一次後:
第二次:
第三次:
第四次:
最後一次:
當兩邊的指標重合時,將基準放的那個位置,然後一次快速排序結束,
結束後的結果是,基準左側,全是比他小的,基準右側全是比他大的。
而遞迴就是一次快速排序後,兩邊遞迴子串行快排,函式實現:
public static int partio1(int array,int low,int high )
if(low >=high)else
while(low=high)else
} array[low] = tmp;
return low;
} public static void quick(int array,int start,int end)
if(par
非遞迴:
這是一次快排後的結果,我們將,基準兩側控制範圍的下標入棧。
0到4是基準左側的下標範圍,6到8是基準右側的下標範圍,然後讓8和6出棧,對這
個範圍的子問題快排,如若大於乙個元素,繼續入棧,知道有序,類似遞迴,再讓右
邊有序,最終使得序列有序。
**:public static int partion(int array,int low,int high)
if(low >= high)else
while(low < high && array[low] <= point)
if(low >= high)else
} array[low] = point;
return low;
} public static void quicks(int array)
if(par < high-1)
//出棧
while(top > 0)
if(par < high-1)
} }
Java中關於快速排序的理解
在部落格上面看了很多大神的解析,自己慢慢的有了一點思路。首先我認為快速排序就是採用了分治的思想 先找到其中乙個數字作為基準,一般是第乙個,然後找到它在這一組序列中間對應的真正位置,然後以這個數字為分界分為兩組在分別採用一開始找第乙個數字真正位置的方法,分別找到這兩組對應的第乙個數字的位置,然後再分,...
java 快速排序
public class myquicksort while strvoid middle strvoid low lowif low hight else if hight middle temp strvoid hight strvoid hight strvoid low strvoid lo...
快速排序(java)
快速排序 public class quacksort int pivot arr low 取第乙個數作為中間數 左滑塊當前的下標數,從第二個數字開始,從最後乙個開始 int left low 1 int right high 右滑塊當前的下標數 while left right 從右邊開始找 wh...