您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關java中快速排序法是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
快速排序法:
顧名思議,快速排序法是實踐中的一種快速的排序算法,在c++或對java基本類型的排序中特別有用。它的平均運行時間是0(N log N)。該算法之所以特別快,主要是由于非常精練和高度優化的內部循環。
快速排序是對冒泡法的一種改進。通過一趟排序將要排序的的數據分割成獨立的兩部分,其中一部分的所有數據都比另一部分所有的數據要小,然后再按此方法對這兩部分數據分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數據變成有序序列。
示意圖:
這里 定義最左邊元素 為left 最右邊元素為right
p 元素的值 就是 2對應的索引 0 加上 5對應的索引 7 之和 除以2 得到 索引為3 對應的元素7
用左邊大于 7的數跟右邊小于7的數進行 交換位置 一直進行 并且 中間的p也要一直變化位置
直到 排完
代碼實現:
import java.util.Arrays; public class kuaisu { public static void main(String[] args) { int arrays[]=new int[]{2,9,4,7,3,3,6,5}; sort(arrays,0,arrays.length-1); System.out.println(Arrays.toString(arrays)); }
public static void sort(int arrays[],int left,int right){ int l=left ;//給定下標 int r=right;//給定下標 int temp; //定義一個變量 作為中間值 交換 左右兩邊的元素位置 int pivot=arrays[(left+right)/2];//中間值 while(l<r){ //在左邊查找小于中間值得元素 while(arrays[l]<arrays[pivot]){ l++; } //同理在右邊查找大于中間值得元素 while(arrays[r]>arrays[pivot]){ r--; }//直到左邊元素大于右邊元素就結束 if(l>=r){ break; } temp=arrays[l]; arrays[l]=arrays[r]; arrays[r]=temp; //交換完arrays[l]=pivot if(arrays[l]==pivot){ r--; } if(arrays[r]==pivot){ l++; } if(r==l){ //要讓左邊元素 往左邊移 右邊元素往右邊移 錯開 l++; r--; } //對左邊進行遞歸 if(left<r){ sort(arrays,left,r); }//對右邊進行遞歸 if(right>l){ sort(arrays,l,right); } } } }
控制臺輸出結果 如下:
關于“java中快速排序法是什么”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。