大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 Java數(shù)組冒泡排序

Java數(shù)組冒泡排序

更新時(shí)間:2020-11-03 17:26:53 來源:動力節(jié)點(diǎn) 瀏覽1339次

在Java中數(shù)組有很多常用的算法,常用的排序算法包括冒泡排序,直接選擇排序等,一般在開發(fā)中,需要對一組數(shù)組進(jìn)行排序,這時(shí)候就可以使用排序算法排序。其中冒泡排序是比較常用的數(shù)組排序算法之一,冒泡排序主要是排序數(shù)組的過程總是將小數(shù)往前放,大數(shù)往后放。Java數(shù)組冒泡排序其實(shí)就是對比相鄰的值,如果滿足條件就交換值。


一、基本概念

依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。至此第一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對數(shù)開始比較(因?yàn)榭赡苡捎诘?個數(shù)和第3個數(shù)的交換,使得第1個數(shù)不再小于第2個數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個新的最大數(shù)(其實(shí)在整個數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過程,直至最終完成排序。


二、實(shí)現(xiàn)思路

用二重循環(huán)實(shí)現(xiàn),外循環(huán)變量設(shè)為i,內(nèi)循環(huán)變量設(shè)為j。假如有n個數(shù)需要進(jìn)行排序,則外循環(huán)重復(fù)n-1次,內(nèi)循環(huán)依次重復(fù)n-1,n-2,...,1次。每次進(jìn)行比較的兩個元素都是與內(nèi)循環(huán)j有關(guān)的,它們可以分別用a[j]和a[j+1]標(biāo)識,i的值依次為1,2,...,n-1,對于每一個i,j的值依次為0,1,2,...n-i 。

設(shè)數(shù)組長度為N:

1.比較相鄰的前后二個數(shù)據(jù),如果前面數(shù)據(jù)大于后面的數(shù)據(jù),就將二個數(shù)據(jù)交換。

2.這樣對數(shù)組的第0個數(shù)據(jù)到N-1個數(shù)據(jù)進(jìn)行一次遍歷后,最大的一個數(shù)據(jù)就“沉”到數(shù)組第N-1個位置。

3.N=N-1,如果N不為0就重復(fù)前面二步,否則排序完成。


三、代碼實(shí)現(xiàn)

package 冒泡排序;

import java.util.Arrays;

/**

* 冒泡排序

* @author mmz

*

*/

public class BubbleSort {

public static void BubbleSort(int[] arr) {

int temp;//定義一個臨時(shí)變量

for(int i=0;i<arr.length-1;i++){ p="" 冒泡趟數(shù)<="">

for(int j=0;j<arr.length-i-1;j++){< p="">

if(arr[j+1]<arr[j]){< p="">

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

}

}

}

}

public static void main(String[] args) {

int arr[] = new int[]{1,6,2,2,5};

BubbleSort.BubbleSort(arr);

System.out.println(Arrays.toString(arr));

}

}


四、算法分析

若記錄序列的初始狀態(tài)為"正序",則冒泡排序過程只需進(jìn)行一趟排序,在排序過程中只需進(jìn)行n-1次比較,且不移動記錄;反之,若記錄序列的初始狀態(tài)為"逆序",則需進(jìn)行n(n-1)/2次比較和記錄移動。因此冒泡排序總的時(shí)間復(fù)雜度為O(n*n)。


五、算法優(yōu)化:

冒泡排序法存在的不足及改進(jìn)方法:

第一,在排序過程中,執(zhí)行完最后的排序后,雖然數(shù)據(jù)已全部排序完備,但程序無法判斷是否完成排序,為了解決這一不足,可設(shè)置一個標(biāo)志位flag,將其初始值設(shè)置為非0,表示被排序的表是一個無序的表,每一次排序開始前設(shè)置flag值為0,在進(jìn)行數(shù)據(jù)交換時(shí),修改flag為非0。在新一輪排序開始時(shí),檢查此標(biāo)志,若此標(biāo)志為0,表示上一次沒有做過交換數(shù)據(jù),則結(jié)束排序;否則進(jìn)行排序;

package 冒泡排序;

import java.util.Arrays;

public class BubbleSort1 {

public static void BubbleSort(int[] arr) {

boolean flag = true;

while(flag){

int temp;//定義一個臨時(shí)變量

for(int i=0;i<arr.length-1;i++){ p="" 冒泡趟數(shù),n-1趟<="">

for(int j=0;j<arr.length-i-1;j++){< p="">

if(arr[j+1]<arr[j]){< p="">

temp = arr[j];

arr[j] = arr[j+1];

arr[j+1] = temp;

flag = true;

}

}

if(!flag){

break;//若果沒有發(fā)生交換,則退出循環(huán)

}

}

}

}

public static void main(String[] args) {

int arr[] = new int[]{1,6,2,2,5};

BubbleSort.BubbleSort(arr);

System.out.println(Arrays.toString(arr));

}

}


Java數(shù)組冒泡排序就講到這里,除了冒泡排序之外,本站的Java基礎(chǔ)教程中還有對其他數(shù)組排序算法的講解,感興趣的小伙伴不容錯過。


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 超碰人人操 | a级毛片免费完整视频 | 久久99精品久久久久久黑人 | 99热这里只有精品7 99热这里只有精品8 | 欧美成人免费mv在线播放 | 欧美三级欧美成人高清www | 一区二区午夜 | 亚洲加勒比久久88色综合一区 | 91精品国产品国语在线不卡 | 国产一区二区三区不卡免费观看 | 网站久久| 国产在线19禁免费观看 | 欧美又黄又嫩大片a级 | 国产精品免费在线播放 | 久草免费在线观看 | 在线成人欧美 | 久久久伊香蕉网站 | 国产香蕉国产精品偷在线观看 | 午夜噜噜噜私人影院在线播放 | 四虎免费永久网站入口 | 色图综合网| 国产精品成人免费综合 | 欧美综合色区 | 午夜性色吃奶添下面69影院 | 男人你懂的网站 | 国产精品白丝喷水在线观看 | 久久91精品国产91久久 | 青青草久热精品视频在线观看 | 久久免费播放 | 欧美乱爱| 91福利社| 老司机深夜福利网站 | 天天玩夜夜操 | 久久久久久久亚洲精品 | 亚洲国产精品网 | 国产精品视频久久久久 | 逼毛片 | 欧美一区二区三区在线播放 | 13一14周岁毛片免费 | 99在线影院| 能在线观看的一区二区三区 |