常見排序演算法的分析與實現

2021-08-27 21:40:23 字數 1798 閱讀 2206

本文僅實現了氣泡排序、選擇排序,插入排序和快速排序,僅供參考學習。

效能體驗:冒泡—>選擇

—>插入

—>快排。

氣泡排序:

/**

* 氣泡排序—最簡單的排序

* 穩定性:穩定

* 時間複雜度:o(n^2)

*/public void bubblesort(int a)

}// 大的數向後移動

} // 結束

}

選擇排序:

/**

* 公升序

* 選擇排序—找出最小數,然後交換當前最小數

* 穩定性:不穩定

* 時間複雜度:o(n^2)

*/public void selectsort(int a)

}if (i != index)

} }

插入排序

/**

* 公升序

* 直接插入排序

* 穩定性:穩定

* 時間複雜度:o(n^2)

*/public void insertsort(int a)

a[index + 1] = insertval;

} }

/**

* 快速排序

* 穩定性:不穩定,多個相同的值的相對位置(前後位置)也許會在演算法結束時產生變動

* 時間複雜度:o(nlogn)

* 空間複雜度:o(nlogn)

*/ public void quicksort(int a, int left, int right)

}/**

* @return 返回中軸位置

*/public int partition(int a, int left, int right)

a[left] = pivot;

return left;

}

測試程式入口

public static void main(string args) 

system.out.println();

//開始時間

calendar car = calendar.getinstance();

system.out.println(car.gettime());

// 冒泡

// s.bubblesort(a);

// 選擇

// s.selectsort(a);

// // 插入

// s.insertsort(a);

//快排

s.quicksort(a,0, size-1);

//排序結束時間

car = calendar.getinstance();

system.out.println(car.gettime());

//陣列長度較小時列印陣列,較大時注釋掉避免宕機

// for (int i = 0; i < a.length; i++)

}

各排序演算法小結

常見排序演算法分析與實現(Java版)

1.氣泡排序 核心提煉 相鄰元素,兩兩比較,按序交換,逐趟進行,給人以水泡逐漸上浮的感覺 時間複雜度 每一趟比較的次數依次為 n 1次 n 2次 1次,所以累加求和得到複雜度為o n 2 空間複雜度 只需要乙個中間變數temp用於元素交換,故複雜度為o 1 實現 氣泡排序 兩兩比較 交換 param...

常見排序演算法分析

歸併排序,插入排序 希爾排序,快速排序,氣泡排序,桶排序。不同的樣本空間各種排序花費時間如圖一所示 二 演算法效能分析 從圖中可以看出在樣本空間很大時快排和希爾排序有很高的效率,因為他們的複雜度為 nlogn 在樣本空間很大時就體現出了優勢,但是不穩定。就從氣泡排序的結果看,可以知道當樣本空間很小的...

常見排序演算法的實現

在電腦科學與數學中,排序演算法是一種基本並且常用的演算法,乙個排序演演算法是一種能將一串資料依照特定排序方式的一種演演算法。有效的排序演演算法在一些演算 法中是重要的,如此這些演演算法才能得到正確解答。排序演演算法也用在處理文字資料以及產生人類可讀的輸出結果。由於實際工作中處理的數量巨大,所以排序演...