欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

數(shù)據(jù)結(jié)構(gòu)之常見排序算法的實現(xiàn)

常見排序算法的實現(xiàn)

插入排序基本思想:

把待排序的記錄按其關(guān)鍵碼值的大小逐個插入到一個已經(jīng)排好序的有序序列中,直到所有的記錄插入完為止,得到一個新的有序序列

直接插入排序

? ? 當(dāng)插入第i(i>=1)個元素時,前面的array[0],array[1],…,array[i-1]已經(jīng)排好序,此時用array[i]的排序碼與array[i-1],array[i-2],…的排序碼順序進(jìn)行比較,找到插入位置即將array[i]插入,原來位置上的元素順序后移
代碼實現(xiàn):

void InsertSort(int* a, int n) {
? ? // [0,end]有序,把end+1位置的插入到前序序列
? ? // 控制[0,end+1]有序
? ? for (int i = 0; i < n - 1; i++)
? ? {
? ? ? ? int end = i;
? ? ? ? int tmp = a[end + 1];
? ? ? ? while (end >= 0)
? ? ? ? {
? ? ? ? ? ? if (tmp < a[end])//如果小于則將a[end]復(fù)制覆蓋到后一位,tmp保存被覆蓋的值
? ? ? ? ? ? {
? ? ? ? ? ? ? ? a[end + 1] = a[end];
? ? ? ? ? ? }
? ? ? ? ? ? else
? ? ? ? ? ? {
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }

? ? ? ? ? ? --end;//每次都往前比較
? ? ? ? }

? ? ? ? a[end + 1] = tmp;//將tmp保存值插入比它小的值的前面一位
? ? }
}

直接插入排序的特性總結(jié):

  1. 元素集合越接近有序,直接插入排序算法的時間效率越高
  2. 時間復(fù)雜度:O(N^2)
  3. 空間復(fù)雜度:O(1),它是一種穩(wěn)定的排序算法
  4. 穩(wěn)定性:穩(wěn)定
  5. 代碼實現(xiàn)
  6. void ShellSort(int* a, int n) {
    ? ? int gap = n;
    ? ? while (gap > 1)//當(dāng)gap<=1則說明已經(jīng)進(jìn)行了最后的插入排序
    ? ? {
    ? ? ? ? gap = gap / 3 + 1;//gap每次縮小相應(yīng)倍數(shù),使得排序越來越接近有序,
    ? ? ? ? //+1使得gap最后一次排序為直接插入排序

    ? ? ? ? for (int i = 0; i < n - gap; ++i)
    ? ? ? ? {
    ? ? ? ? ? ? int end = i;//end為該次排序起始位置下標(biāo)
    ? ? ? ? ? ? int tmp = a[end + gap];//每次間隔gap個位置進(jìn)行比較
    ? ? ? ? ? ??
    ? ? ? ? ? ? while (end >= 0)//此處為直接插入思想
    ? ? ? ? ? ? {
    ? ? ? ? ? ? ? ? if (tmp < a[end])
    ? ? ? ? ? ? ? ? {
    ? ? ? ? ? ? ? ? ? ? a[end + gap] = a[end];
    ? ? ? ? ? ? ? ? ? ? end -= gap;
    ? ? ? ? ? ? ? ? }
    ? ? ? ? ? ? ? ? else
    ? ? ? ? ? ? ? ? {
    ? ? ? ? ? ? ? ? ? ? break;
    ? ? ? ? ? ? ? ? }
    ? ? ? ? ? ? }
    ? ? ? ? ? ? //
    ? ? ? ? ? ? a[end + gap] = tmp;
    ? ? ? ? }
    ? ? }
    }希爾排序的特性總結(jié):
    穩(wěn)定性:不穩(wěn)定
    希爾排序是對直接插入排序的優(yōu)化。
    當(dāng)gap > 1時都是預(yù)排序,目的是讓數(shù)組更接近于有序。當(dāng)gap == 1時,數(shù)組已經(jīng)接近有序的了,這就會很快。這樣整體而言,可以達(dá)到優(yōu)化的效果。我們實現(xiàn)后可以進(jìn)行性能測試的對比。*
    希爾排序的時間復(fù)雜度不好計算,因為gap的取值方法很多,導(dǎo)致很難去計算,因此在好些樹中給出的希爾排序的時間復(fù)雜度都不固定

文章鏈接: http://m.qzkangyuan.com/25916.html

文章標(biāo)題:數(shù)據(jù)結(jié)構(gòu)之常見排序算法的實現(xiàn)

文章版權(quán):夢飛科技所發(fā)布的內(nèi)容,部分為原創(chuàng)文章,轉(zhuǎn)載請注明來源,網(wǎng)絡(luò)轉(zhuǎn)載文章如有侵權(quán)請聯(lián)系我們!

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
云數(shù)據(jù)中心投稿分享

數(shù)據(jù)結(jié)構(gòu)之排序

2023-12-12 9:50:09

云數(shù)據(jù)中心

數(shù)據(jù)中心的數(shù)據(jù)是怎么運(yùn)輸?shù)模?/a>

2023-12-13 11:13:00

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 五河县| 金坛市| 固阳县| 基隆市| 太湖县| 泸水县| 五家渠市| 石河子市| 广平县| 鄂托克前旗| 仪陇县| 梅河口市| 泽州县| 墨脱县| 仁化县| 巴林左旗| 教育| 庆云县| 丰原市| 集安市| 汨罗市| 喀什市| 兴和县| 迁安市| 潞城市| 孝义市| 西华县| 南召县| 南澳县| 余姚市| 古丈县| 自贡市| 望都县| 梨树县| 措勤县| 兴义市| 龙南县| 福清市| 时尚| 临颍县| 大关县|