1. 程式人生 > >java實現交換排序之氣泡排序

java實現交換排序之氣泡排序

一:氣泡排序基本思想

氣泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法。 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需          要交換,也就是說該數列已經排序完成。 氣泡排序演算法的運作如下:(從後往前)
  1. 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
  2. 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
  3. 針對所有的元素重複以上的步驟,除了最後一個。
  4. 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

 二:氣泡排序的Java實現程式碼

public class BubbleSort {
	
	  

	public static void main(String[] args) {
		
     int[] aa={8,4,6,1,9,3,25,14,18};
     
     BubbleSort bl=new BubbleSort();
     
     bl.sort(aa);
     
     System.out.println("排序後的陣列為:");
     
     for(int i=0;i<=aa.length-1;i++){
    	 System.out.print(aa[i]+" ");
     }
     
     System.out.println();
     
     System.out.println("排序後的陣列為:");
     System.out.println(Arrays.toString(aa));
     
	}
	
	public void sort(int[] a)
    {
        int temp = 0;
        
        int length=a.length;
        for(int i = 0; i <length ; i++) {  
             
            for(int j = 0; j <length-i-1; j++) {  
                if(a[j+1] < a[j]) {  
                    temp=a[j+1];  
                    a[j+1]=a[j];  
                    a[j]=temp;  
                     
                }  
            }  
        }  

執行結果如下:

排序後的陣列為:
1 3 4 6 8 9 14 18 25 
排序後的陣列為:
[1, 3, 4, 6, 8, 9, 14, 18, 25]

三:氣泡排序的效能

時間複雜度

若檔案的初始狀態是正序的,一趟掃描即可完成排序。所需的關鍵字比較次數    和記錄移動次數    均達到最小值:    ,    。 所以,氣泡排序最好的時間複雜度為    。
  若初始檔案是反序的,需要進行    趟排序。每趟排序要進行    次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值: 氣泡排序的最壞時間複雜度為  
  。 綜上,因此氣泡排序總的平均時間複雜度為    。

演算法穩定性

氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,我想你是不會再無聊地把他們倆交換一下的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。

相關推薦

java實現交換排序氣泡排序

一:氣泡排序基本思想 氣泡排序(Bubble Sort),是一種電腦科學領域的較簡單的排序演算法。 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需          要交換,也就是說該數列已經排

Java再學習-演算法氣泡排序

           Java排序,據說有八大排序,小編這次系列部落格可能講不了全部,我將自己理解比較到位的幾個排序,和大家分享一下吧。今天來說一說氣泡排序,其實氣泡排序屬於交換排序的一種,氣泡排序

交換排序氣泡排序(四)

氣泡排序(Bubble Sort),是一種 電腦科學領域的較簡單的 排序演算法。它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。 程式碼實現:

交換排序--氣泡排序,快速排序

    氣泡排序是一種很經典的排序方式了,當然他也是最簡單的一種交換式排序,氣泡排序的思想很簡單,從前面開始,每每兩個數相比,如果前面的大於後面的則交換位置,知道最後一個數,這樣一輪排序下來,最大的

Java-陣列排序氣泡排序、選擇排序、折半查詢

氣泡排序 核心思想:相鄰兩個數比較大小,然後換位 public static void main(String[] args) { int[] name = new int[] {12,5

常見排序氣泡排序

#include<stdio.h> int Array[] = {2,0,1,3,4,8,6,7,5,9}; void Bubble_Sort(int *Array_Sort)注:此處可寫int Array_Sort[10] {      

【資料結構】八大排序氣泡排序

氣泡排序:(升序為例)          利用兩個for迴圈每次比較相鄰的兩個元素,如果前一個元素比後一個元素大則交換兩個數。外層的for迴圈控制排序的總趟數,內層的for迴圈控制每一趟的相鄰兩個數的比較的次數 我們很輕易的看出:       氣泡排序的時間複雜度最

演算法排序氣泡排序

   最近一段時間一段時間一直在學習演算法排序,突然間就想把以前學的排序演算法來寫一寫。    今天就先來說一下氣泡排序,下就然我們來看一下氣泡排序的幾個特點和其中的一種演算法實現: 1、比較相鄰的

Python八大排序-----氣泡排序

def bubbleSort1(): L = [] listone = input("請輸入你要排序的玩意兒:") listone = listone.split(',') for v in listone: c = int(v

基礎排序氣泡排序_選擇排序_插入排序

氣泡排序 相鄰的兩個數比較排序 第一次迴圈先找到最大數/最小數排在第一位,後面每次迴圈以此類推 插入排序 將後面的某個數與前面的數比較,如果符合條件(比其大/比其小)將之取出 前面的數依次向後面移動 選擇排序 第一次迴圈,首位與後面每個位置上的數比較,找到最大值\最小

八大內部排序——氣泡排序

***  氣泡排序  最壞複雜度 O(n^2)   穩定排序 *** #include <iostream> using namespace std; void print(int *a,int n){ for(int i=0;i<n;i++)

JS快速排序氣泡排序

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>快速排序</title> </head> <

【8086彙編】基礎排序氣泡排序

氣泡排序是一種極為基礎的排序演算法,相信學過C語言、JAVA等程式語言的同學對此都有所瞭解。 氣泡排序的原理是將陣列中的前後兩個數兩兩比較,小的在前大的在後(你也可以反過來),一次迴圈過後,最大的數到了末尾。 接下來是排除最後那個最大的數,對前面的數繼續進行上述操作。

連結串列排序 氣泡排序

#include <stdio.h> #include <stdlib.h> typedef struct guest {     int num;     struct guest *next; }guest; guest * Create();

python排序氣泡排序

氣泡排序 思想:每次比較相鄰兩個元素,如果它們的順序錯誤,就對換它們的位置。 每一趟只能將一個元素歸位,如果有n個元素需要進行排序,則需要將n-1個元素進行歸位,即進行(n-1)躺操作,已經歸位的不再比較。 最優時間複雜度:O(n) 【表示便利一次沒有發現任何可以交換的

排序演算法氣泡排序java實現

氣泡排序介紹 基本思想就是相鄰資料交換,每次將最大或最小的數進行移動。 步驟:(1)對陣列中的各資料,依次比較相鄰的兩個元素的大小。            (2)如果前面的資料大於(小於)後面的資料,就交換這兩個資料。經過第一輪

排序演算法氣泡排序的思想以及Java實現

1 基本思想 設排序表長為n,從後向前或者從前向後兩兩比較相鄰元素的值,如果兩者的相對次序不對(A[i-1] > A[i]),則交換它們,其結果是將最小的元素交換到待排序序列的第一個位置,我們

Java演算法實現氣泡排序及優化

氣泡排序,是一種很簡單的排序演算法。原理就不過多介紹了,直接入手demo。 需求:輸入一組資料,用氣泡排序進行排序。 先用最直接的方法進行排序,程式碼如下: //對一組數進行氣泡排序 public class Bubble01 { public static void m

Java實現排序演算法氣泡排序

氣泡排序的思想:將帶排序的序列兩兩進行比較,較大的一個“冒泡”,“冒泡”即如果下標為A 與B的資料比較,A 大則與B交換位置,否則就不交換位置,交換位置後,此時B的位置程式設計A,B 的下一個位置是B,兩者在進行比較,每進行一輪排序,總是較大的數排在剩下序列的最高位,也因此為

JAVA氣泡排序實現雙色球機選小程式

紅球6位:1~33 中不重複的遞增陣列 ,籃球1位:1~16   廢話不多說,上程式碼 pojo package pojo; public class Lottery {public int red;public int blue;public int startRed