JAVA中數(shù)組從小到大排序的2種方法實(shí)例
快速排序
快速排序是一種比較高效的排序算法,采用“分而治之”的思想,通過(guò)多次比較和交換來(lái)實(shí)現(xiàn)排序,在一趟排序中把將要排序的數(shù)據(jù)分成兩個(gè)獨(dú)立的部分,對(duì)這兩部分進(jìn)行排序使得其中一部分所有數(shù)據(jù)比另一部分都要小,然后繼續(xù)遞歸排序這兩部分,最終實(shí)現(xiàn)所有數(shù)據(jù)有序。
public static void quickSort(int[] arry,int left,int right){
//運(yùn)行判斷,如果左邊索引大于右邊是不合法的,直接return結(jié)束此方法
if(left>right){
return;
}
//定義變量保存基準(zhǔn)數(shù)(第一次進(jìn)入方法最左邊的數(shù)字下標(biāo)為0)
int base = arry[left];
//定義變量i,指向最左邊
int i = left;
//定義j ,指向最右邊(第一次進(jìn)入方法最右邊數(shù)字下標(biāo)為數(shù)組的長(zhǎng)度減1)
int j = right;
//當(dāng)i和j不相遇的時(shí)候,再循環(huán)中進(jìn)行檢索
while(i!=j){
//先由j從右往左檢索比基準(zhǔn)數(shù)小的,如果檢索到比基準(zhǔn)數(shù)小的就停下。
//如果檢索到比基準(zhǔn)數(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ì)跳出這個(gè)循環(huán),往下執(zhí)行
//如果這個(gè)條件不成立就說(shuō)明 i和j相遇了
//如果i和j相遇了,就交換基準(zhǔn)數(shù)這個(gè)元素和相遇位置的元素
//把相遇元素的值賦給基準(zhǔn)數(shù)這個(gè)位置的元素
arry[left] = arry[i];
//把基準(zhǔn)數(shù)賦給相遇位置的元素
arry[i] = base;
//基準(zhǔn)數(shù)在這里遞歸就為了左邊的數(shù)比它小,右邊的數(shù)比它大
//排序基準(zhǔn)數(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));
}冒泡排序
- 冒泡排序思想:給定一個(gè)數(shù)組,讓數(shù)組升序 (降序) 排序。
- 將數(shù)組中相鄰元素從前往后依次進(jìn)行比較,如果前一個(gè)元素比后一個(gè)元素大,則交換,一趟下來(lái)后最大元素就在數(shù)組的末尾。
- 依次從上上述過(guò)程,直到數(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é)
到此這篇關(guān)于JAVA中數(shù)組從小到大排序的2種方法的文章就介紹到這了,更多相關(guān)JAVA數(shù)組從小到大排序內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于javaMybatis存進(jìn)時(shí)間戳的問(wèn)題
這篇文章主要介紹了javaMybatis存進(jìn)時(shí)間戳的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
JAVA文件讀寫(xiě)例題實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了JAVA文件讀寫(xiě)例題實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06
微服務(wù)架構(gòu)設(shè)計(jì)RocketMQ基礎(chǔ)及環(huán)境整合
這篇文章主要介紹了微服務(wù)架構(gòu)設(shè)計(jì)入門(mén)RocketMQ的基礎(chǔ)及環(huán)境整合實(shí)現(xiàn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-10-10
Java設(shè)計(jì)模式之建造者模式(Builder模式)介紹
這篇文章主要介紹了Java設(shè)計(jì)模式之建造者模式(Builder模式)介紹,本文講解了為何使用建造者模式、如何使用建造者模式、Builder模式的應(yīng)用等內(nèi)容,需要的朋友可以參考下2015-03-03
SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn)
本文主要介紹了SpringBoot+Redis使用AOP防止重復(fù)提交的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
MyBatis游標(biāo)Cursor的正確使用和百萬(wàn)數(shù)據(jù)傳輸?shù)膬?nèi)存測(cè)試
這篇文章主要介紹了MyBatis游標(biāo)Cursor的正確使用和百萬(wàn)數(shù)據(jù)傳輸?shù)膬?nèi)存測(cè)試,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01

