JAVA中數(shù)組從小到大排序的2種方法實例
快速排序
快速排序是一種比較高效的排序算法,采用“分而治之”的思想,通過多次比較和交換來實現(xiàn)排序,在一趟排序中把將要排序的數(shù)據(jù)分成兩個獨立的部分,對這兩部分進行排序使得其中一部分所有數(shù)據(jù)比另一部分都要小,然后繼續(xù)遞歸排序這兩部分,最終實現(xiàn)所有數(shù)據(jù)有序。
public static void quickSort(int[] arry,int left,int right){ //運行判斷,如果左邊索引大于右邊是不合法的,直接return結(jié)束此方法 if(left>right){ return; } //定義變量保存基準數(shù)(第一次進入方法最左邊的數(shù)字下標為0) int base = arry[left]; //定義變量i,指向最左邊 int i = left; //定義j ,指向最右邊(第一次進入方法最右邊數(shù)字下標為數(shù)組的長度減1) int j = right; //當i和j不相遇的時候,再循環(huán)中進行檢索 while(i!=j){ //先由j從右往左檢索比基準數(shù)小的,如果檢索到比基準數(shù)小的就停下。 //如果檢索到比基準數(shù)大的或者相等的就停下 while(arry[j]>=base && i<j){ j--; //j從右往左檢索 } while(arry[i]<=base && i<j){ i++; //i從左往右檢索 } //代碼走到這里i停下,j也停下,然后交換i和j位置的元素 int tem = arry[i]; arry[i] = arry[j]; arry[j] = tem; } //如果上面while條件不成立就會跳出這個循環(huán),往下執(zhí)行 //如果這個條件不成立就說明 i和j相遇了 //如果i和j相遇了,就交換基準數(shù)這個元素和相遇位置的元素 //把相遇元素的值賦給基準數(shù)這個位置的元素 arry[left] = arry[i]; //把基準數(shù)賦給相遇位置的元素 arry[i] = base; //基準數(shù)在這里遞歸就為了左邊的數(shù)比它小,右邊的數(shù)比它大 //排序基準數(shù)的左邊 quickSort(arry,left,i-1); //排右邊 quickSort(arry,j+1,right); } public static void main(String[] args) { int[] arry = {11,81,71,61,10,42,33,24,99}; System.out.println("arry排序前:"+Arrays.toString(arry)); quickSort(arry,0, arry.length-1); System.out.println("arry排序后:"+Arrays.toString(arry)); }
冒泡排序
- 冒泡排序思想:給定一個數(shù)組,讓數(shù)組升序 (降序) 排序。
- 將數(shù)組中相鄰元素從前往后依次進行比較,如果前一個元素比后一個元素大,則交換,一趟下來后最大元素就在數(shù)組的末尾。
- 依次從上上述過程,直到數(shù)組中所有的元素都排列好。
public static void main(String[] args) { int[] arr = {18,13,50,15,4,17,18}; System.out.println("arr的排序前:\n18 13 50 15 4 17 18 "); int temp = 0 ; for(int i = 0 ;i< arr.length -1; i++){ for(int j = 0; j<arr.length-1-i; j++){ if(arr[j]>arr[j+1]){ //條件成立 交換位置 temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } System.out.println("arr排序后:"); for(int i = 0; i<arr.length; i++){ System.out.print(arr[i]+"\t"); } }
總結(jié)
到此這篇關于JAVA中數(shù)組從小到大排序的2種方法的文章就介紹到這了,更多相關JAVA數(shù)組從小到大排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
微服務架構(gòu)設計RocketMQ基礎及環(huán)境整合
這篇文章主要介紹了微服務架構(gòu)設計入門RocketMQ的基礎及環(huán)境整合實現(xiàn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2021-10-10SpringBoot+Redis使用AOP防止重復提交的實現(xiàn)
本文主要介紹了SpringBoot+Redis使用AOP防止重復提交的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-07-07MyBatis游標Cursor的正確使用和百萬數(shù)據(jù)傳輸?shù)膬?nèi)存測試
這篇文章主要介紹了MyBatis游標Cursor的正確使用和百萬數(shù)據(jù)傳輸?shù)膬?nèi)存測試,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01