亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

java幾種排序算法的實現及簡單分析

2019-11-26 15:10:22
字體:
來源:轉載
供稿:網友

本文實例講述了java幾種排序算法的實現及簡單分析。分享給大家供大家參考。具體如下:

package test;public class first {/*普通的插入排序*/public void insertSort(int[] list) {int i, j;list[0] = -999;//相當于設置一個監視哨兵,不用判斷是否越界,//但要求數組從第二個數開始即i=1開始存儲for (i = 1; i < list.length; i++) {j = i;while (list[j] < list[j - 1]) {int temp = list[j];list[j] = list[j - 1];list[j - 1] = temp;j = j - 1;}}}/*折半插入,在直接插入的基礎上,添加二叉查找*/public void binInsertSort(int[] r, int low, int high) {for (int i = low + 1; i <= high; i++){int temp = r[i]; // 保存待插入元素int hi = i - 1;int lo = low; // 設置初始區間while (lo <= hi){ // 折半確定插入位置int mid = (lo + hi) / 2;if (temp < r[mid])hi = mid - 1;elselo = mid + 1;}for (int j = i - 1; j > hi; j--)r[j + 1] = r[j]; // 移動元素r[hi + 1] = temp; // 插入元素}}/*希爾排序或shell */public void shellSort(int[] r, int low, int high, int[] delta){for (int k=0;k<delta.length;k++)shellInsert(r, low, high, delta[k]);}private void shellInsert(int[] r, int low, int high, int deltaK){for (int i=low+deltaK; i<=high; i++)if (r[i]<r[i-deltaK]){int temp = r[i];int j = i-deltaK;for(; j>=low&&temp<r[j]; j=j-deltaK)r[j+deltaK] = r[j];r[j+deltaK] = temp;}}/*簡單的選擇交換*/public void selectSort(int[] r, int low, int high) {for (int k = low; k < high - 1; k++) { // 作n-1 趟選取int min = k;for (int i = min + 1; i <= high; i++)// 選擇關鍵字最小的元素if (r[i] < r[min])min = i;if (k != min) {int temp = r[k]; // 關鍵字最小的元素與元素r[k]交換r[k] = r[min];r[min] = temp;}// end of if}}/*堆排序-大頂堆*/public void heapSort(int[] r){int n = r.length - 1;for (int i=n/2; i>=1; i--)heapAdjust(r,i,n);for (int i=n; i>1; i--){int temp = r[1];r[1] = r[i];r[i] = temp;heapAdjust(r,1,i-1);}}//調整堆private void heapAdjust(int[] r, int low, int high){int temp = r[low];for (int j = 2 * low; j <= high; j = j * 2) {if (j < high && r[j] < r[j + 1])j++;if (temp > r[j])break;r[low] = r[j];low = j;}r[low] = temp;}public static void main(String[] args) {first fs = new first();int[] a = { 100, 9, 8, 9, 9, 7, 7, 0, 0, 99, 55, 7, 6, 5, 4, 3, 2, 1 };int[] k={5,3,1};// fs.insertSort(a);//fs.binInsertSort(a, 0, a.length - 1);//fs.shellSort(a, 0,a.length-1,k);//fs.selectSort(a, 0, a.length-1);fs.heapSort(a);for (int i = 0; i < a.length; i++) {System.out.println(a[i]);}}}

插入排序、交換排序、選擇排序、歸并排序等排序方法,都有一個共同的特點,那就是它們都是通過比較元素的大小來確定元素之間的相對位置的,即上述排序方法都是基于比較的排序方法。下面,我們就基于比較的排序方法進行一個對比和總結。
我們主要從算法的平均時間復雜度、最壞時間復雜度、空間復雜度以及排序的穩定性等方面,對各中排序方法加以比較。

排序方法 平均時間復雜度最壞時間復雜度空間復雜度 穩定性
直接插入排序 Ο(n2) Ο(n2) Ο(1) 穩定
起泡排序 Ο(n2) Ο(n2) Ο(1) 穩定
快速排序 Ο(n log n) Ο(n2) Ο(log n) 不穩定
簡單選擇排序 Ο(n2) Ο(n2) Ο(1) 不穩定
堆排序 Ο(n log n) Ο(n log n) Ο(1) 不穩定
歸并排序 Ο(n log n) Ο(n log n) Ο(n) 穩定

從時間性能上看,快速排序是所有排序算法中實際性能最好的,然而快速排序在最壞情況下的時間性能不如堆排序和歸并排序。這一點可以通過對快速排序進行改進來避免,一種通過隨機選擇樞軸元素的隨機快速排序,可以使得出現最壞情況出現的幾率非常小,在實際的運用中可以認為不存在。在堆排序和歸并排序的比較中,當n 較大時,歸并排序所需時間較少,然而它需要較多的輔助存儲空間。

從方法穩定性上來看,大多數時間復雜度為Ο(n2)的排序均是穩定的排序方法,除簡單選擇排序之外。而多數時間性能較好的排序方法,例如快速排序、堆排序、希爾排序都是不穩定的。一般來說,排序過程中的比較是在相鄰的兩個元素之間進行的排序方法是穩定的。

并且,排序方法的穩定性是由方法本身決定的,對于不穩定的排序方法而言,不管其描述形式如何,總能找到一種不穩定的實例。

綜上所述,上面討論的所有排序方法中,沒有哪一個是絕對最優的,在實際的使用過程中,應當根據不同情況選擇適當的排序方法。

希望本文所述對大家的java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品网址在线| 久久理论片午夜琪琪电影网| 日韩精品中文在线观看| 日产精品久久久一区二区福利| 亚洲视频在线免费观看| 欧美成人高清视频| 成人网中文字幕| 欧美激情中文字幕乱码免费| 国产精品一二三在线| 91精品成人久久| 91精品国产91久久久久久不卡| 欧美午夜激情视频| 秋霞av国产精品一区| 91亚洲人电影| 精品久久久久久久大神国产| 日韩欧美大尺度| 7777免费精品视频| 欧美在线视频免费| 国内免费久久久久久久久久久| 欧美激情一级精品国产| 久久精品国产亚洲7777| 精品无人区太爽高潮在线播放| 欧美电影电视剧在线观看| 一色桃子一区二区| 久久久精品影院| 日韩免费av片在线观看| 在线午夜精品自拍| 欧美性xxxxxx| 亚洲91精品在线| 欧美亚洲激情在线| 尤物九九久久国产精品的特点| 亚洲国产欧美一区二区三区同亚洲| 国产精品久久久久91| 日韩中文有码在线视频| 国产精品91一区| 久久精品国产69国产精品亚洲| 国产亚洲精品va在线观看| 亚洲第一av网| 亚洲高清免费观看高清完整版| 欧美中文字幕精品| 91沈先生作品| 国产成人综合亚洲| 亚洲一区二区日本| 国产精品极品美女粉嫩高清在线| 亚洲午夜av电影| 日韩av电影在线播放| 久久久久久久一| 欧美性开放视频| 欧美精品久久一区二区| 亚洲另类欧美自拍| zzijzzij亚洲日本成熟少妇| 亚洲综合自拍一区| 欧美性一区二区三区| 国产69精品久久久久久| 92裸体在线视频网站| 91在线视频导航| 国产亚洲精品日韩| 91免费在线视频| 国产精品成人av性教育| 97香蕉久久夜色精品国产| 欧美在线视频观看免费网站| 91亚洲永久免费精品| 国产精品久久久久久久久久小说| 91av免费观看91av精品在线| 色777狠狠综合秋免鲁丝| 亚洲小视频在线观看| 4438全国成人免费| 日本一区二区不卡| 亚洲影院污污.| 欧美激情网站在线观看| 亚洲国产精彩中文乱码av| 91av在线不卡| 国产一区二区成人| 青草青草久热精品视频在线观看| 96pao国产成视频永久免费| 欧美精品情趣视频| 欧美精品videos另类日本| 深夜精品寂寞黄网站在线观看| 亚洲国产小视频在线观看| 日韩欧美国产黄色| 中文字幕日韩免费视频| 97在线免费观看视频| 欧美激情va永久在线播放| 欧美激情欧美狂野欧美精品| 91麻豆桃色免费看| 日韩国产高清视频在线| 中文字幕精品av| 国产ts一区二区| 久久精品成人欧美大片古装| 日韩有码片在线观看| 国产精品成人观看视频国产奇米| 国产91精品网站| 日韩成人网免费视频| 亚洲美女在线视频| 亚洲日韩欧美视频| 日韩在线中文字| 国产日韩精品入口| 亚洲一区二区三区777| 欧美激情视频网| 国产精品久久久久久久久久久新郎| 亚洲成人精品视频在线观看| 久久久久久久av| 亚洲人成伊人成综合网久久久| 日韩av免费在线观看| 成人网在线免费看| 欧美精品在线免费| 欧美日韩国产中文精品字幕自在自线| 日韩精品一区二区三区第95| 国产精品一区久久| 色综合视频网站| 成人精品久久av网站| 欧美精品情趣视频| 欧美日韩性视频| 成人精品一区二区三区电影免费| 精品美女国产在线| 色偷偷偷综合中文字幕;dd| 深夜福利亚洲导航| 午夜精品国产精品大乳美女| 精品久久久久久久久久久久久| 亚洲最新视频在线| 亚洲一区av在线播放| 欧美中文字幕在线观看| 大胆人体色综合| 国产成人精品av在线| 国产丝袜视频一区| 成人福利免费观看| 亚洲美女视频网站| 日韩欧美在线国产| 亚洲一区二区中文| 91国产精品视频在线| 久久久久一本一区二区青青蜜月| 精品久久久久久久久久久久久久| 最近2019中文免费高清视频观看www99| 97av在线播放| 国产在线视频91| 亚洲品质视频自拍网| 91av在线影院| 国产精品视频成人| 日韩欧美中文在线| 国内精品一区二区三区| 日韩av中文字幕在线播放| 91国产视频在线播放| 中文字幕亚洲综合久久筱田步美| 亚洲第一男人av| 精品国产电影一区| 日韩在线观看视频免费| 欧美日本国产在线| 欧美日韩免费区域视频在线观看| 成人妇女免费播放久久久| 亚洲18私人小影院| 国产va免费精品高清在线| 欧美与欧洲交xxxx免费观看| 国产精品成av人在线视午夜片| 精品亚洲一区二区三区在线播放| 欧美日韩国产成人| 91精品成人久久| 日韩成人在线视频观看| 欧美日韩国产麻豆| 91精品国产自产91精品| 精品在线小视频| 中文字幕av一区二区| 亚洲在线www| 91亚洲精品久久久| 欧美精品国产精品日韩精品|