java演算法-氣泡排序
氣泡排序的特點:
>相鄰位置比較,如果約定從大到小排序,每一輪比較完成,可以排好一個小的,如果從小到大,每一輪比較完成,可以在末尾排好一個大的
我們用隨機陣列進行比較,把每輪的結果打印出來,就知道,氣泡排序的規律了:
package com.ghostwu; import java.util.Random; class MyBubbleSort { private int[] arr; public MyBubbleSort(){ arr = new int[10]; Random rand = new Random();for( int i = 0; i < arr.length; i++ ){ arr[i] = rand.nextInt( 101 ); } } public void sort(){ for( int i = 0; i < arr.length; i++ ){ for( int j = 0; j < ( arr.length - i - 1 ); j++ ){ if( arr[j] > arr[j+1] ) {int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; } } display( "第" + ( i + 1 ) + "輪的比較結果: " ); } } public void display( String info ){ System.out.println( info ); for( int i = 0; i < arr.length; i++ ){ System.out.print( arr[i]+ "\t" ); } System.out.println(); } } public class BubbleSort{ public static void main( String[] args ){ MyBubbleSort bs = new MyBubbleSort(); bs.display( "排序之前:" ); bs.sort(); bs.display( "排序之後:" ); } }
執行結果:
[email protected]:~/java/data_struct/sort$ !javac javac -d . BubbleSort.java [email protected]:~/java/data_struct/sort$ java com.ghostwu.BubbleSort 排序之前: 27 93 9 25 6 98 39 84 56 19 第1輪的比較結果: 27 9 25 6 93 39 84 56 19 98 第2輪的比較結果: 9 25 6 27 39 84 56 19 93 98 第3輪的比較結果: 9 6 25 27 39 56 19 84 93 98 第4輪的比較結果: 6 9 25 27 39 19 56 84 93 98 第5輪的比較結果: 6 9 25 27 19 39 56 84 93 98 第6輪的比較結果: 6 9 25 19 27 39 56 84 93 98 第7輪的比較結果: 6 9 19 25 27 39 56 84 93 98 第8輪的比較結果: 6 9 19 25 27 39 56 84 93 98 第9輪的比較結果: 6 9 19 25 27 39 56 84 93 98 第10輪的比較結果: 6 9 19 25 27 39 56 84 93 98 排序之後: 6 9 19 25 27 39 56 84 93 98
從上面的結果,可以看出,第7輪已經排好序了。後面的3輪完全沒有必要,浪費CPU的計算時間,所以,我們可以完善一下上面的程式,用一個變數來標記,是否已經排好序了。
改進後的程式:
package com.ghostwu; import java.util.Random; class MyBubbleSort { private int[] arr; public MyBubbleSort(){ arr = new int[10]; Random rand = new Random(); for( int i = 0; i < arr.length; i++ ){ arr[i] = rand.nextInt( 101 ); } } public void sort(){ boolean flag = true; for( int i = 0; i < arr.length; i++ ){ flag = true; for( int j = 0; j < ( arr.length - i - 1 ); j++ ){ if( arr[j] > arr[j+1] ) { int tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = tmp; flag = false; } } if( flag ) break; display( "第" + ( i + 1 ) + "輪的比較結果: " ); } } public void display( String info ){ System.out.println( info ); for( int i = 0; i < arr.length; i++ ){ System.out.print( arr[i] + "\t" ); } System.out.println(); } } public class BubbleSort{ public static void main( String[] args ){ MyBubbleSort bs = new MyBubbleSort(); bs.display( "排序之前:" ); bs.sort(); bs.display( "排序之後:" ); } }
執行結果:
[email protected]:~/java/data_struct/sort$ java com.ghostwu.BubbleSort 排序之前: 9 71 79 0 31 11 75 65 68 36 第1輪的比較結果: 9 71 0 31 11 75 65 68 36 79 第2輪的比較結果: 9 0 31 11 71 65 68 36 75 79 第3輪的比較結果: 0 9 11 31 65 68 36 71 75 79 第4輪的比較結果: 0 9 11 31 65 36 68 71 75 79 第5輪的比較結果: 0 9 11 31 36 65 68 71 75 79 排序之後: 0 9 11 31 36 65 68 71 75 79
相關推薦
**java演算法 氣泡排序 選擇排序 折半查詢**
//氣泡排序 ``` int[] arr = {2,3,5,6,4,7,8,2,5,6}; for(int i = 0; i < arr.length-1; i++){ for(int j = i + 1; j < arr.length; j++){
java演算法-氣泡排序
氣泡排序的特點: >相鄰位置比較,如果約定從大到小排序,每一輪比較完成,可以排好一個小的,如果從小到大,每一輪比較完成,可以在末尾排好一個大的 我們用隨機陣列進行比較,把每輪的結果打印出來,就知道,氣泡排序的規律了: package com.ghostwu; import java.util
java排序演算法—氣泡排序
快速排序 氣泡排序的思想方法: 1.從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分; 2.下一次繼續這個過程,直到所有資料元素都排好序。演算法的核心在於每次通過兩兩比較交換位置,選出剩餘無序序列裡最大(小
java版資料結構與演算法—氣泡排序
/** * 氣泡排序規則: * 1.比較兩個相鄰物件 * 2.如果左邊的大於右邊的,則調換位置 * 3.向右移動一個位置,比較接下來的兩個物件 * 時間複雜度:O(log n^2) */ class ArrayBubble { public static void bub
Java經典演算法氣泡排序
氣泡排序、 實現原理: 比較兩個相鄰位數的元素,將較大的元素交換到右端或左端,最大的元素就在最右端或是最左端; 從小-->大 1 public class MaoPao { 2 3 public static void
[排序演算法]--氣泡排序的三種實現(Java)
氣泡排序是非常好理解的,以從小到大排序為例,每一輪排序就找出未排序序列中最大值放在最後。 設陣列的長度為N: (1)比較前後相鄰的二個數據,如果前面資料大於後面的資料,就將這二個數據交換。 (2)這樣對陣列的第0個數據到N-1個數據進行一次遍歷後,最大的一個數據
java中的排序演算法——氣泡排序
氣泡排序 工作原理: 重複的訪問要排序的序列,一次比較兩個元素,如果他們的順序錯誤就把它們交換過來,重 復進行訪問,直到排序完成,越小的元素會經過不停的交換慢慢浮到序列的最上層。 即每輪迴圈把最大的數放在最後,與選擇排序的區別,無需記錄最大數的位置,一邊比較一邊
java 排序演算法 氣泡排序
一般的氣泡排序會有重複的比較,所以需要對氣泡排序進行優化,優化後的氣泡排序 package shujujiegou; import java.util.Arrays; /** * 氣泡排序的優化演算法 * @author TomCat * */ pu
排序演算法----氣泡排序java
import java.util.Arrays; import java.util.Scanner; /** * Created by Admin on 2017/3/26. */ public class test02 { public static void BubbleSort(int[] n)
Java排序演算法-氣泡排序以及優化
繼上一篇博: 氣泡排序:如何理解: 兩個數比較大小,較大的數下沉,較小的數冒起來。 過程:比較相鄰的兩個資料,如果第二個數小,就交換位置。從後向前兩兩比較,一直到比較最前兩個資料。最終最小數被交換到起始的位置,這樣第一個最小數的位置就排好了。繼續重複上述過程,依次將第2.
結合舞蹈更易理解的演算法--氣泡排序演算法[java程式碼]
舞蹈地址:http://t.cn/hrf58M 氣泡排序演算法java程式碼: /** * 氣泡排序 * @author hsy * */ public class BubbleSort { private long[] a; private in
JAVA 複習氣泡排序 , 遞迴演算法
使用氣泡排序,首先我們要知道,外層n-1,內層n-i-1,外層是表示迴圈的次數,內層表示迴圈比較,比較的方式是用賦值的方式進行比較的,用我們比較通俗的話來說,兩兩相比,大者後移。氣泡排序和遞迴是基本演算
演算法-Java-0001-氣泡排序
簡介 我們通常所說的排序演算法往往指的是內部排序演算法,即資料記錄在記憶體中進行排序。 排序演算法大體可分為兩種: 比較排序,時間複雜度O(nlogn) ~ O(n^2),主要有:氣泡排序,選擇排序,插入排序,歸併排序,堆排序,快速排序等。 非比較排
演算法 -- Java實現氣泡排序(圖解 + 程式碼實現)
排序思想: 相鄰元素兩兩比較,大的往後放,第一次完畢,最大值出現在了最大索引處(每比較完一趟,就選出一個最大值放到了後面),同理繼續可以得到一個排好序的陣列 排序圖解: 排序規
小演算法 ----氣泡排序
將一組數字從大到小排列 function sort(arr) { function sort(arr) { //第一層for迴圈控制趟數 for (var i = 0; i < arr.length - 1; i++)
排序演算法--氣泡排序(bubble sort)
氣泡排序是一個簡單的排序演算法,演算法複雜度n的平方,特點是兩兩比較,每次遍歷會將最大值或最小值放在最後,像冒泡一樣,每次的最大值或最小值,逐漸冒出,故名氣泡排序; 程式碼如下 void swap( int& a,int& b) {//資料交換的函式,這裡另類了一點,沒有
經典排序演算法 - 氣泡排序Bubble Sort
最近學習了一下排序演算法,寫篇文章記錄一下,詳細講解網上有很多,可以自己去查 氣泡排序Bubble Sort 氣泡排序是通過兩兩比較,最大的往後移,重複這一過程直到資料不再交換,則排序完成。氣泡排序的時間複雜度是O(n²),是穩定排序。 演算法描述(Java):
java之氣泡排序、選擇排序、快速排序、插入排序、java8排序
package cn.com.javatest.sort; import org.apache.commons.lang3.StringUtils; /** * 常用排序方法 * * @author: Rodge * @time: 2018年10月4日 下午5:16:22 * @ve
Python 演算法 - 氣泡排序
# coding=utf-8 # 氣泡排序 def bubble_sort(lists): """ 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。 走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。
排序演算法之氣泡排序(關鍵詞:資料結構/演算法/排序演算法/氣泡排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 氣泡排序演算法 程式碼 from swap import swap def bubble_sort(nums): n = len(nums) for i in rang