重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
冒泡排序的原理:
當(dāng)雄ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)的ssl證書(shū)銷售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書(shū)合作)期待與您的合作!
從第一個(gè)元素開(kāi)始,將相鄰的兩個(gè)元素依次進(jìn)行比較,直到最后兩個(gè)元素完成比較。如果前一個(gè)元素比后一個(gè)元素大,則交換它們的位置。整個(gè)過(guò)程完成后最后一個(gè)元素就是最大值,完成第一輪比較,后邊通過(guò)for循環(huán)依次完成后續(xù)比較。
運(yùn)行代碼如下:
package day01;
public class 冒泡 {
public static void main(String[] args) {
int []arr=new int[] {12,45,33,46,3};
System.out.println("排序之前的元素順序:");
for(int i=0;iarr.length;i++)
{
System.out.print(arr[i]+" ");
}
int t;
for(int j=0;jarr.length-1;j++)
{
for(int x=0;xarr.length-1;x++)
{
if(arr[x]arr[x+1])
{
t=arr[x];
arr[x]=arr[x+1];
arr[x+1]=t;
}
}
}
System.out.println();
System.out.println("排序之后的元素順序:");
for(int k=0;karr.length;k++)
{
System.out.print(arr[k]+" ");
}
}
}
運(yùn)行結(jié)果截圖:
擴(kuò)展資料:
(1)冒泡排序每一輪把一個(gè)最大的元素放在數(shù)組的最后
(2)如果想要實(shí)現(xiàn)倒敘比較輸出可以把代碼判斷大小的部分改為下邊代碼即可。
if(arr[x]arr[x+1])
{
t=arr[x];
arr[x]=arr[x+1];
arr[x+1]=t;
}
(3)使用知識(shí)點(diǎn):數(shù)組length的使用,數(shù)組的定義,for循環(huán)的嵌套。
程序如下:
public class TTT
{
public static void main(String[] args)
{
int[] num = {20,31,65,14,98,49,27,90,16,85};
boolean flag = true;
int count = 1;
while(flag)
{
flag = false;
for(int i=0;inum.length-1;i++)
{
if(num[i] num[i+1])
{
int temp = num[i];
num[i] = num[i+1];
num[i+1] = temp;
flag = true;
}
}
System.out.print("第" + count++ +"輪排序后的序列為:");
for(int i=0;inum.length;i++)
{
System.out.print(num[i] + "\t");
}
System.out.println();
}
}
}
有問(wèn)題歡迎提問(wèn),滿意請(qǐng)采納,謝謝!
冒泡排序算法:
int類型的數(shù)組:3 1 6 2 5
第一次循環(huán):
1 3 6 2 5
1 3 6 2 5
1 3 2 6 5
1 3 2 5 6
第二次循環(huán):
1 3 2 5
1 2 3 5
1 2 3 5
第三次循環(huán):
1 2 3
1 2 3
。。。
算法:取出最大的放在最后,下次就不用比較最后一個(gè)了。*/
public?class?BubbleSort{
public?static?void?main(String[]?args){
int[]?a?=?{3,1,6,2,5};
//開(kāi)始排序
for(int?i=a.length-1;i0;i--){
for(int?j=0;ji;j++){
if(a[j]a[j+1]){
//交換位置
int?temp;
temp?=?a[j];
a[j]?=?a[j+1];
a[j+1]?=?temp;
}
}
}
//遍歷
for(int?i=0;ia.length;i++){
System.out.println(a[i]);
}
}
}
方法一: package basic.javastu; public class NumberTest {
/** * 實(shí)現(xiàn)冒泡程序1 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int len=numb.length;
int i,j;
int temp;
System.out.println("排序前的數(shù)組各個(gè)值:");
for(i=0;ilen;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(numb[j]numb[j-1])
{
temp=numb[j];
numb[j]=numb[j-1];
numb[j-1]=temp;
}
}
}
System.out.println("排序后的數(shù)組各個(gè)值:");
for(i=0;ilen;i++)
{
System.out.print(numb[i]+"\t");
}
}
}
方法二: package basic.javastu; public class NumberTest2 {
/** * 實(shí)現(xiàn)冒泡程序2 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int leng=numb.length;
System.out.println("排序前的數(shù)組各個(gè)值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數(shù)組排序后:"); for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
} }
private static int[] swap(int[] numb) { int n2[]=numb; int len=n2.length; int i,j; int temp; for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(n2[j]n2[j-1])
{
temp=n2[j];
n2[j]=n2[j-1];
n2[j-1]=temp;
}
}
} return n2; } }
方法三: package basic.javastu; public class NumberTest3 {
/** * 實(shí)現(xiàn)冒泡程序2 */ public static void main(String[] args) { // TODO Auto-generated method stub
int[] numb=new int[]{3,42,57,1,32,24};
int leng=numb.length;
System.out.println("排序前的數(shù)組各個(gè)值:");
for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
}
System.out.println("\n");
swap(numb);
System.out.println("數(shù)組排序后:"); for(int i=0;ileng;i++)
{
System.out.print(numb[i]+"\t");
} }
private static void swap(int[] numb) { int len=numb.length; int i,j; int temp; for(i=1;i=len;i++)
{
for(j=len-1;j=1;j--)
{
if(numb[j]numb[j-1])
{
temp=numb[j];
numb[j]=numb[j-1];
numb[j-1]=temp;
}
}
} } }
冒泡排序是比較經(jīng)典的排序算法。代碼如下:
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
拓展資料:
原理:比較兩個(gè)相鄰的元素,將值大的元素交換至右端。
思路:依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。重復(fù)第一趟步驟,直至全部排序完成。
第一趟比較完成后,最后一個(gè)數(shù)一定是數(shù)組中最大的一個(gè)數(shù),所以第二趟比較的時(shí)候最后一個(gè)數(shù)不參與比較;
第二趟比較完成后,倒數(shù)第二個(gè)數(shù)也一定是數(shù)組中第二大的數(shù),所以第三趟比較的時(shí)候最后兩個(gè)數(shù)不參與比較;
依次類推,每一趟比較次數(shù)-1;
??
舉例說(shuō)明:要排序數(shù)組:int[]?arr={6,3,8,2,9,1};?
for(int i=1;iarr.length;i++){
for(int j=1;jarr.length-i;j++){
//交換位置
} ? ?
參考資料:冒泡排序原理
可以實(shí)現(xiàn)比較器Comparator來(lái)定制排序方案,同時(shí)使用Colletions.sort的方式進(jìn)行排序,代碼如下:
public void sortDesc(ListLong s){
Collections.sort(s, new ComparatorLong() {
public int compare(Long o1, Long o2) {
Long result = o2 - o1;
return result.intValue();
}
});
s.forEach(item-{
System.out.print(item +" ");
});
}
同時(shí)常用的比較排序算法主要有:冒泡排序,選擇排序,插入排序,歸并排序,堆排序,快速排序等。
java的冒泡排序?qū)崿F(xiàn)如下:
public?static?void?bubbleSort(int?[]arr)?{????????for(int?i?=0;iarr.length-1;i++)?{????????????for(int?j=0;jarr.length-i-1;j++)?{//-1為了防止溢出????????????????if(arr[j]arr[j+1])?{????????????????????int?temp?=?arr[j];?????????????????????????????????????????arr[j]=arr[j+1];?????????????????????????????????????????arr[j+1]=temp;????????????}????????????}????????????}????}
還有非比較排序,時(shí)間復(fù)雜度可以達(dá)到O(n),主要有:計(jì)數(shù)排序,基數(shù)排序,桶排序等。