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