資料結構(java)三 排序

2021-08-29 03:49:54 字數 2066 閱讀 9663

氣泡排序法

/*

* 氣泡排序

*/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...