氣泡排序法
/*
* 氣泡排序
*/public class bubblesort ;
system.out.println("排序前陣列為:");
for(int num:arr)
for(int i=0;iarr[j+1])}}
system.out.println();
system.out.println("排序後的陣列為:");
for(int num:arr)
} }
n個元素需要排序n-1輪;
第i輪需要比較n-i次;
n個元素排序,需要比較n(n-1)/2次;
氣泡排序的演算法複雜度較高,為o(n*n)
選擇排序法
//選擇排序
public class selectionsort ;
system.out.println("交換之前:");
for(int num:arr)
//選擇排序的優化
for(int i = 0; i < arr.length - 1; i++)
}//在內層迴圈結束,也就是找到本輪迴圈的最小的數以後,再進行交換
if(i != k)
}system.out.println();
system.out.println("交換後:");
for(int num:arr)
}}
n個元素需要排序n-1輪;
第i輪需要比較n-i次;
n個元素排序,需要比較n(n-1)/2次;
選擇排序的演算法複雜度仍為o(n*n);
相比於氣泡排序,選擇排序的交換次數大大減少,因此速度要快於氣泡排序
插入排序
package com.test.insertsort;
/** * 插入排序演算法:
* 1、以陣列的某一位作為分隔位,比如index=1,假設左面的都是有序的.
* * 2、將index位的資料拿出來,放到臨時變數裡,這時index位置就空出來了.
* * 3、從leftindex=index-1開始將左面的資料與當前index位的資料(即temp)進行比較,如果array[leftindex]>temp,
* 則將array[leftindex]後移一位,即array[leftindex+1]=array[leftindex],此時leftindex就空出來了.
* * 4、再用index-2(即leftindex=leftindex-1)位的資料和temp比,重複步驟3,
* 直到找到<=temp的資料或者比到了最左面(說明temp最小),停止比較,將temp放在當前空的位置上.
* * 5、index向後挪1,即index=index+1,temp=array[index],重複步驟2-4,直到index=array.length,排序結束,
* 此時陣列中的資料即為從小到大的順序.
* * @author bjh
* */
public class insertsort
public void display()
system.out.println();
}/**
* 插入排序方法
*/public void doinsertsort()
array[leftindex+1] = temp;//把temp放到空位上}}
public static void main(string args);
insertsort is = new insertsort(array);
system.out.println("排序前的資料為:");
is.display();
is.doinsertsort();
system.out.println("排序後的資料為:");
is.display();
}}
個人記錄的比較粗淺比較詳細的推薦乙個部落格 三 排序演算法
所有例子都是公升序排序。資料分成兩部分 已排序和待排序。排序過程中,資料移動分為兩種 1.直接移動 移動資料的儲存位置,消耗時間 2.邏輯移動 改變指向這些資料的指標 特點 遍歷待排序資料,把最小值與起始資料 最左邊 交換位置 次數 第一輪n 1次,第k輪n k次 步驟 1.如果待排序資料大於0,則...
演算法基礎(三) 排序
我們先來看看幾種排序的結構圖 排序是否穩定 比如 排序前 25 7 6 4 29 3 排序後 22 3 4 5 6 7 9 排序前藍2在紅 2前面,排序後藍 2依然在紅 2前面,則所用的排序方法是穩定的。如果排序後,紅 2有可能在藍 2前面,那麼所用的排序方法是不穩定的 下面說說前面幾種排序的時間複...
三 排序 幸運數字
問題 幸運數字 題目描述 笨小猴的詞彙量很小,所以每次做英語選擇題的時候都很頭疼。但是他找到了一種方法,經試驗證明,用這種方法去選擇選項的時候選對的機率非常大!這種方法的具體描述如下 假設maxn是單詞中出現次數最多的字母的出現次數,minn是單詞中出現次數最少的字母的出現次數,如果maxn min...