1. 程式人生 > >冒泡排序1

冒泡排序1

[] code dba n個元素 can 冒泡排序 spa 接下來 ext

冒泡排序一:

可以利用這樣排序來排序:將第一個元素和它後面的元素比較大小,如果比後面的某個元素大,就將這兩個元素互換位置,直到最後一個元素,一輪排序完畢,獲得一個最小值在新數組的第一位。接著再對第二個元素重復以上操作,這樣第二個元素也是除第一個元素之外最小的,一直到第n-1個元素,和第n個元素比較,如果小於n,結束循環,如果大於n,交換位置之後結束循環。

循環次數:(n-1)+(n-2)+……+1

package com.zzh;
import java.util.Scanner;

import javax.sound.midi.Soundbank;

public class Main { //冒泡排序1 public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int n=scanner.nextInt(); int[] num=new int[n]; int i,j,temp; for(i=0;i<n;i++) { num[i]=scanner.nextInt(); } for
(i=0;i<n-1;i++) { for(j=i+1;j<n;j++) { if (num[i]>num[j]) { temp=num[i]; num[i]=num[j]; num[j]=temp; } } } for(i=0;i<n;i++) { System.out.print(num[i]
+" "); } } }

冒泡排序二:

待排數組:12 45 1 545 21 65 888

方法:將數組中相鄰的元素兩兩比較,如果下標i的元素大於下標i+1的元素,則交換位置,一輪排序完成之後,數組中的最大值挪到新數組的最後,下標為n-1;新一輪排序的時候,依然從第一個元素到倒數第二個元素之間兩兩比較,得到一個最大值放在倒數第二位,這樣的話,經過n-1輪排序之後,即可獲得一個從小到大排序的新數組

package com.company;
import java.util.Scanner;

import javax.sound.midi.Soundbank;

public class Main {
    //冒泡排序1
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();
        int[] num=new int[n];
        int i,j,k,temp;
        for(i=0;i<n;i++) {
            num[i]=scanner.nextInt();
        }
        //接下來對數組進行排序,一共要進行num.length-1輪排序
        for(j=0;j<num.length-1;j++) {
            //從第一個元素到倒數第二個元素
            for(i=0;i<n-1;i++) {
                if (num[i]>num[i+1]) {
                    temp=num[i];
                    num[i]=num[i+1];
                    num[i+1]=temp;
                }
            }
            n--;//每一輪排序結束,最大值存在數組末尾,所以下一輪排序的時候,n的值減1,減少比較次數
        }
        for(j=0;j<num.length;j++) {
            System.out.print(num[j]+" ");
        }
    }
}

冒泡排序1