演算法導論學習之一:氣泡排序
氣泡排序:
由於氣泡排序是大家必學必會,而且是應用廣泛的下面介紹一下基本原理 氣泡排序動態圖形原理--取自百度圖片
氣泡排序(Bubble Sort)是一種簡單的排序演算法。
它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。
氣泡排序演算法的運作如下:
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。 針對所有的元素重複以上的步驟,除了最後一個。 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
本例從後面向前面上浮冒泡
package class2;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
int[] A=new int[]{2,4,1,3,6,0,3,5};
System.out.println(Arrays.toString(A));
bubblesort(A);
System.out.println(Arrays.toString(A));
}
public static void bubblesort(int[] A) {
int temp=0;
for (int i = 0; i < A.length-1; i++) { //最多做n-1趟排序
System.out.println("第"+(i+1)+"輪");
for (int j = A.length-1; j>i; j--) {
if (A[j]<A[j-1]) {
temp=A[j];
A[j]=A[j-1];
A[j-1]=temp;
}
System.out.println(Arrays.toString(A));
}
}
}
}
Result:
[2, 4, 1, 3, 6, 0, 3, 5]
第1輪
[2, 4, 1, 3, 6, 0, 3, 5]
[2, 4, 1, 3, 6, 0, 3, 5]
[2, 4, 1, 3, 0, 6, 3, 5]
[2, 4, 1, 0, 3, 6, 3, 5]
[2, 4, 0, 1, 3, 6, 3, 5]
[2, 0, 4, 1, 3, 6, 3, 5]
[0, 2, 4, 1, 3, 6, 3, 5]
第2輪
[0, 2, 4, 1, 3, 6, 3, 5]
[0, 2, 4, 1, 3, 3, 6, 5]
[0, 2, 4, 1, 3, 3, 6, 5]
[0, 2, 4, 1, 3, 3, 6, 5]
[0, 2, 1, 4, 3, 3, 6, 5]
[0, 1, 2, 4, 3, 3, 6, 5]
第3輪
[0, 1, 2, 4, 3, 3, 5, 6]
[0, 1, 2, 4, 3, 3, 5, 6]
[0, 1, 2, 4, 3, 3, 5, 6]
[0, 1, 2, 3, 4, 3, 5, 6]
[0, 1, 2, 3, 4, 3, 5, 6]
第4輪
[0, 1, 2, 3, 4, 3, 5, 6]
[0, 1, 2, 3, 4, 3, 5, 6]
[0, 1, 2, 3, 3, 4, 5, 6]
[0, 1, 2, 3, 3, 4, 5, 6]
第5輪
[0, 1, 2, 3, 3, 4, 5, 6]
[0, 1, 2, 3, 3, 4, 5, 6]
[0, 1, 2, 3, 3, 4, 5, 6]
第6輪
[0, 1, 2, 3, 3, 4, 5, 6]
[0, 1, 2, 3, 3, 4, 5, 6]
第7輪
[0, 1, 2, 3, 3, 4, 5, 6]
[0, 1, 2, 3, 3, 4, 5, 6]
第三章函式的增長
漸近緊確界
斐波那契數列:
遞迴法,效率上來講,沒有直接法快
package class2;
public class feibonaqiArray {
public static void main(String[] args) {
System.out.println(arr(8));
}
public static long arr(int n) {
if (n<=1) {
return 1;
}else if(n==2){
return 1;
}
else {
return arr(n-1)+arr(n-2);
}
}
}
========================================================
直接法:
package class2;
public class fibonaqiArray_2 {
public static void main(String[] args) {
long a=1,b=1;
long temp;
long n=50;
long t1 = System.nanoTime();
for (int i = 0; i < n-2; i++) {
temp=b;
b=a+b;
a=temp;
}
long t2 = System.nanoTime();
System.out.println(b);
System.out.println(t2-t1);
}
}
相關文章
- 【演算法-排序之一】氣泡排序演算法排序
- 【一起學習排序演算法】2 氣泡排序排序演算法
- 排序演算法–氣泡排序排序演算法
- 排序演算法__氣泡排序排序演算法
- 排序演算法--氣泡排序排序演算法
- 排序演算法-氣泡排序排序演算法
- 排序演算法——氣泡排序排序演算法
- 氣泡排序的推導排序
- 氣泡排序演算法排序演算法
- 演算法:氣泡排序演算法排序
- Java排序演算法之氣泡排序Java排序演算法
- 排序演算法-氣泡排序(Bubble Sort)排序演算法
- 排序——氣泡排序排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 複習資料結構:排序演算法(二)——氣泡排序資料結構排序演算法
- 氣泡排序排序
- 演算法雙端氣泡排序演算法排序
- c#-氣泡排序-演算法C#排序演算法
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- 演算法篇---氣泡排序演算法演算法排序
- 排序之氣泡排序排序
- #排序演算法#【1】概述、氣泡排序、選擇排序排序演算法
- 排序:氣泡排序&快速排序排序
- java:快速排序演算法與氣泡排序演算法Java排序演算法
- 深入淺出的排序演算法-氣泡排序排序演算法
- 演算法(氣泡排序,快排,歸併排序)演算法排序
- 演算法導論學習之五:快速排序演算法排序
- java氣泡排序演算法實現Java排序演算法
- 從演算法開始 [氣泡排序]演算法排序
- 從演算法開始[氣泡排序]演算法排序
- 死磕演算法之氣泡排序演算法排序
- js氣泡排序JS排序
- 氣泡排序-fusha排序
- 氣泡排序演示排序
- Shell氣泡排序排序
- d氣泡排序排序
- 氣泡排序正解排序
- JavaScript氣泡排序JavaScript排序