简单排序--冒泡排序
生活随笔
收集整理的這篇文章主要介紹了
简单排序--冒泡排序
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
冒泡排序:
public void sort(){int out,in;//out指向已經(jīng)排好序的前一個(gè)for( out=nElements-1;out>1;out--){for(in=0;in<out;in++){if(arr[in]>arr[in+1]){swap(in,in+1);//相鄰的兩個(gè)元素比較,交換}}}}//實(shí)現(xiàn)冒泡排序
相鄰的元素兩兩比較,out指向末端待排序的元素。
10個(gè)數(shù)據(jù)項(xiàng),第一次排序9次比較,第二次 8次比較。。。一共9+8+。。。+1=45次
? N個(gè)數(shù)據(jù) 1+2+...+N+(N+1)+(N+2)=N(N+1)/2 約做了N^2/2次比較,大約N^2/4次交換(概率,兩個(gè)數(shù)據(jù)交換概率1/2)時(shí)間復(fù)雜度:O(N^2)
數(shù)組初始狀態(tài):
如圖,兩兩比較,交換(大小顛倒時(shí))
每完成一輪兩兩比較,即inner+1到達(dá)未排序序列的末端,就能將未排序中的一個(gè)元素排好序(最大的)。
排好序的狀態(tài):
完整代碼:
package TwoArray;/*** 冒泡排序 最小的數(shù)據(jù)項(xiàng)放在最開始,最大的放后面 10個(gè)數(shù)據(jù)項(xiàng),第一次排序9次比較,第二次 8次比較。。。一共9+8+。。。+1=45次* N個(gè)數(shù)據(jù) N+(N+1)+(N+2)...+1=N(N+1)/2 約做了N^2/2次比較,大約N^2/4次交換(概率,兩個(gè)數(shù)據(jù)交換概率1/2)時(shí)間復(fù)雜度:O(N^2)* @author zhic**/ public class BubbleSort {int[] arr;int nElements;public BubbleSort(int max) {arr = new int[max];nElements = 0;}//構(gòu)造函數(shù)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;}//交換兩個(gè)下標(biāo)對(duì)應(yīng)的數(shù)組值public void sort(){int out,in;//out指向已經(jīng)排好序的前一個(gè)for( out=nElements-1;out>1;out--){for(in=0;in<out;in++){if(arr[in]>arr[in+1]){swap(in,in+1);//相鄰的兩個(gè)元素比較,交換}}}}//實(shí)現(xiàn)冒泡排序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();} }
總結(jié)
以上是生活随笔為你收集整理的简单排序--冒泡排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 带权图的最小生成树
- 下一篇: 简单排序--选择排序