日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

八大内部排序

發(fā)布時(shí)間:2024/1/18 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八大内部排序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

八大排序


前言

排序,就是重新排列表中的元素,使得表中元素滿足按關(guān)鍵字有序的過(guò)程。

排序有許多種,常用的八大內(nèi)部排序?yàn)槊芭菖判颉⒉迦肱判颉⑦x擇排序、希爾排序、快速排序、歸并排序、基數(shù)排序、堆排序

這幾種排序沒(méi)有絕對(duì)的優(yōu)劣,每種排序都有他們適用范圍


?

一、冒泡排序

冒泡排序每一趟排序可以確定一個(gè)元素的最終位置,若一次掃描并沒(méi)有元素進(jìn)行交換,則說(shuō)明表已有序。

void bubbleSort(ElemType a[], int n){for(int i = 0; i < n - 1; i++){bool flag = false;for(int j = n - 1; j > i; j--){if(a[j] < a[j - 1]){swap(a[j], a[j - 1]);flag = true;}}if(flag == false){return;}} }

冒泡排序的性能分析:空間效率為O(1),最壞時(shí)間復(fù)雜度為O(),平均時(shí)間復(fù)雜度為O()。

二、插入排序

插入排序的基本思想是將一個(gè)未排序的表,按照關(guān)鍵字大小插入到前面已經(jīng)排好序的子序列(表)中,直到表中所有元素插入完成。

void insertSort(ElemType a[], int n){int i, j;for(int i = 2; i <= n; i++){if(a[i] < a[i-1]){a[0] = a[i];for(j = i - 1; a[0] < a[j]; --j)a[j+1] = a[j]a[j+1] = a[0];}} }

性能分析,插入排序的空間復(fù)雜度為O(1),時(shí)間復(fù)雜度為O()

三、希爾排序

希爾排序的基本思想是先將待排序的表分割成若干個(gè)特殊子表,每個(gè)子表的元素在主表中間隔n個(gè)元素,并將間隔量稱為增量,然后對(duì)各個(gè)子表進(jìn)行插入排序,當(dāng)整個(gè)表中的元素基本有序,再對(duì)全體記錄進(jìn)行一次插入排序

void shellSort(ElemType a[], int n){for(int dk = n/2; dk >= 1; dk = dk/2){for(int i = dk + 1; i <= n; i++){if(a[i] < a[i - dk]){a[0] = a[i];for(int j = i - dk; j > 0 && a[0] < a[j]; j -= dk){a[j+dk] = a[j];}a[j+dk] = a[0]; }}} }

性能分析:空間復(fù)雜度為O(1),時(shí)間復(fù)雜度為O(),最壞情況為O()

四、快速排序

快速排序的基本思想是分治,在待排序的表中隨機(jī)選取一個(gè)元素pivot作為樞紐(基準(zhǔn)),經(jīng)過(guò)一次排序后,樞紐左邊的元素均小于樞紐,樞紐右邊的元素均大于樞紐,即樞紐確定其在有序表的最終位置,這樣的一次過(guò)程稱為一趟快排,或叫一次劃分。

int partition(ElemType a[], int lo, int hi){int pivot = a[lo];while(lo < hi){while(lo < hi && a[hi] >= pivot) --hi;a[lo] = a[hi];while(lo < hi && a[lo] <= pivot) ++lo;a[hi] = a[lo];}a[lo] = pivot;return lo; } void quickSort(ElemType a[], int lo, int hi){if(lo < hi){int pivot = partition(a, lo, hi);quickSort(a, lo, pivot - 1);quickSort(a, pivot + 1, hi);} }

性能分析:空間效率,快排遞歸需要借助遞歸工作棧來(lái)保存每層遞歸的信息,其容量和遞歸的最大深度一致。時(shí)間效率,最好情況,快排的最壞情況發(fā)生在兩個(gè)區(qū)域分別包含n-1個(gè)元素和0個(gè)元素時(shí),這種極大程度的不對(duì)稱性若發(fā)生在每次遞歸中,即對(duì)應(yīng)的表基本有序或基本逆序,則最壞情況的時(shí)間復(fù)雜度為。


總結(jié)

?

總結(jié)

以上是生活随笔為你收集整理的八大内部排序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。