简单排序--冒泡排序
生活随笔
收集整理的這篇文章主要介紹了
简单排序--冒泡排序
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
冒泡排序:
public void sort(){int out,in;//out指向已經排好序的前一個for( out=nElements-1;out>1;out--){for(in=0;in<out;in++){if(arr[in]>arr[in+1]){swap(in,in+1);//相鄰的兩個元素比較,交換}}}}//實現冒泡排序
相鄰的元素兩兩比較,out指向末端待排序的元素。
10個數據項,第一次排序9次比較,第二次 8次比較。。。一共9+8+。。。+1=45次
? N個數據 1+2+...+N+(N+1)+(N+2)=N(N+1)/2 約做了N^2/2次比較,大約N^2/4次交換(概率,兩個數據交換概率1/2)時間復雜度:O(N^2)
數組初始狀態:
如圖,兩兩比較,交換(大小顛倒時)
每完成一輪兩兩比較,即inner+1到達未排序序列的末端,就能將未排序中的一個元素排好序(最大的)。
排好序的狀態:
完整代碼:
package TwoArray;/*** 冒泡排序 最小的數據項放在最開始,最大的放后面 10個數據項,第一次排序9次比較,第二次 8次比較。。。一共9+8+。。。+1=45次* N個數據 N+(N+1)+(N+2)...+1=N(N+1)/2 約做了N^2/2次比較,大約N^2/4次交換(概率,兩個數據交換概率1/2)時間復雜度:O(N^2)* @author zhic**/ public class BubbleSort {int[] arr;int nElements;public BubbleSort(int max) {arr = new int[max];nElements = 0;}//構造函數public void insert(int value){arr[nElements] = value;nElements++;}public void display(){for(int i=0;i<nElements;i++){System.out.print(arr[i] + " ");}}public void swap(int one,int two){int temp = arr[one];arr[one] = arr[two];arr[two] = temp;}//交換兩個下標對應的數組值public void sort(){int out,in;//out指向已經排好序的前一個for( out=nElements-1;out>1;out--){for(in=0;in<out;in++){if(arr[in]>arr[in+1]){swap(in,in+1);//相鄰的兩個元素比較,交換}}}}//實現冒泡排序public static void main(String[] args){int max = 50;BubbleSort arr = new BubbleSort(max);arr.insert(10);arr.insert(0);arr.insert(90);arr.insert(9);arr.insert(30);arr.insert(10);arr.insert(20);arr.insert(40);arr.insert(70);arr.display();System.out.println();arr.sort();arr.display();} }
總結
以上是生活随笔為你收集整理的简单排序--冒泡排序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 带权图的最小生成树
- 下一篇: 简单排序--选择排序