国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

情人節(jié)給女朋友做網(wǎng)站線上推廣軟件

情人節(jié)給女朋友做網(wǎng)站,線上推廣軟件,免費廣告語設(shè)計生成器,品牌推廣策劃價格前言: 本文主要講解插入排序中的直接插入排序和希爾排序。 1、直接插入排序: 1.1基本思想 直接插入排序是一種簡單的插入排序法,其基本思想是把待排序的數(shù)值按照大小順序逐個插入到一個已經(jīng)排好序的有序序列中,直到將所有記錄…

前言:

本文主要講解插入排序中的直接插入排序和希爾排序。

1、直接插入排序:

1.1基本思想

直接插入排序是一種簡單的插入排序法,其基本思想是把待排序的數(shù)值按照大小順序逐個插入到一個已經(jīng)排好序的有序序列中,直到將所有記錄插入完為止,得到一個新的有序序列。

實際中我們玩撲克牌時,就用了插入排序的思想。

下面的圖片就是插入排序的整體過程,第一步認(rèn)為5是一個有序區(qū)間,然后2比5小,就讓5向后移,前面填充2,又形成一個有序的序列,以此類推……

原碼:

外層的循環(huán)相當(dāng)于每次插入的撲克牌,內(nèi)層循環(huán)決定了這張撲克牌怎么插,插在哪里


void StraightInsert(int arr[], int n)
{//[0-end]有序,插入end+1位置的數(shù),使得[0-end+1]序列仍然有序for (int i = 0;i<n-1;i++){int end = i;int tmp = arr[i + 1];while (end >= 0){if (arr[end] > tmp){arr[end + 1] = arr[end];end--;}elsebreak;}arr[end + 1] = tmp;}
}

時間復(fù)雜度:

時間復(fù)雜度計算的是完成程序的次數(shù)不能只看是雙層循環(huán)就 武斷 O(N^2)

前面講過時間復(fù)雜度計算的是最差的情況,最差的情況就是將逆序的排成升序的,1+2+3+……n-1,這是一共累加的次數(shù),求和發(fā)現(xiàn)這是一個等差數(shù)列求和,最高項就是N^2,因此時間復(fù)雜度就是O(N^2)。

最好的情況下本來就是順序,end位置的值都需要跟前面一個比較,所以就是O(N)。

2、希爾排序

2.1概念:

希爾排序是一種特殊的直接插入排序,也算是直接插入排序的優(yōu)化版本。

2.2思想:

我們發(fā)現(xiàn)在一些直接插入排序的例子時,發(fā)現(xiàn)其實一些排序是很接近O(N)。

比如1,2,5,3,6

因此我們想先進行預(yù)排序(讓原來的排序更接近有序),接著再進行直接插入排序

2.3預(yù)排序

何為預(yù)排序?

預(yù)排序就是分組排,間隔為gap的為一組,注意 組數(shù)==gap的值

預(yù)排序的規(guī)律:(重要)

  • 多組間隔為gap的預(yù)排序,gap從大到小
  • gap越大:大的數(shù)可以越快的到后面,小的數(shù)可以越快的到前面。
  • gap越大,預(yù)排序越不接近有序
  • gap越小,預(yù)排序越接近有序
  • gap==1時,就是直接插入排序。

那gap到底是多少呢?

這個問題較難回答,這個問題沒有官方的答案。

首先gap不可能是一個固定的數(shù),應(yīng)該與數(shù)組的長度n相關(guān),我們一般采用gap ==? n/ 2的表達式來去定義gap的值,因為要保證最后gap要被除到1為止

原碼:

void ShellSort(int arr[], int n)
{int gap = n;while (gap > 1){gap = gap / 3+1;for (int i = 0; i < n - gap; i++)//這里的循環(huán)判斷條件也很有講究,正好能將多組gap排完{int end = i;int tmp = arr[end + gap];while (end >= 0){if (tmp < arr[end]){arr[end + gap] = arr[end];//將數(shù)據(jù)往后移end -= gap;}elsebreak;}arr[end + gap] = tmp;}}
}

通過代碼,我們不難發(fā)現(xiàn)預(yù)排序大部分的代碼內(nèi)容與直接插入排序是一樣的,只不過將1換成了gap而已。

預(yù)排序需要排很多次,真的比直接插入排序快嘛?

我們自己可以比較這兩種排序方式上的時間差距,經(jīng)過比較我們發(fā)現(xiàn),直接插入排序的時間要比希爾排序的時間多上100倍左右!(隨著N的增大,時間差也會增大)

時間復(fù)雜度

首先外層的while循環(huán)執(zhí)行的次數(shù)是logN,內(nèi)層的循環(huán)當(dāng)gap很大時,執(zhí)行次數(shù)是N,當(dāng)gap很小時,執(zhí)行次數(shù)也接近于N,所以最終的時間復(fù)雜度O(logN*N)

注意N^2與N*logN兩者并不是一個量級的,特別是當(dāng)N的數(shù)非常大時。

一些書上直接給出了結(jié)論O(N^1.3)。

http://aloenet.com.cn/news/28936.html

相關(guān)文章:

  • 南京公司網(wǎng)站開發(fā)合肥瑤海區(qū)
  • 一個jsp做的購物小網(wǎng)站搜索引擎優(yōu)化的方法和技巧
  • wordpress文庫插件搜索引擎優(yōu)化的流程
  • wordpress裝在根目錄文件夾中_如何通過域名直接訪問?google關(guān)鍵詞seo
  • 四川省建筑設(shè)計院排名seo哪家公司好
  • 動態(tài)網(wǎng)站數(shù)據(jù)庫設(shè)計seo搜索引擎優(yōu)化排名哪家更專業(yè)
  • 在網(wǎng)上如何找做網(wǎng)站的人品牌營銷策略分析
  • 企業(yè)網(wǎng)站建設(shè)費用定金怎么做賬關(guān)鍵詞查網(wǎng)址
  • 昆山做網(wǎng)站哪家好百度競價排名廣告定價鮮花
  • 做網(wǎng)站用什么軟件知乎google瀏覽器下載
  • 企業(yè)做定制網(wǎng)站的好處自助建站免費建站平臺
  • 網(wǎng)站出現(xiàn)的的問題軟文營銷案例
  • 泰安網(wǎng)站制作seo海外
  • 做電池的外貿(mào)網(wǎng)站廣州日新增51萬人
  • 哪個網(wǎng)站不花錢可以做招聘互聯(lián)網(wǎng)營銷的特點
  • wordpress下載器插件廣東seo價格是多少錢
  • 網(wǎng)站建設(shè) 日志免費外鏈網(wǎng)
  • 做網(wǎng)站可以在哪兒接活app推廣拉新接單平臺
  • 梅州專業(yè)網(wǎng)站建設(shè)教程高端品牌網(wǎng)站建設(shè)
  • flash網(wǎng)站的優(yōu)勢廈門谷歌seo公司
  • 自己做的網(wǎng)站怎么弄成app中國聯(lián)通騰訊
  • 企業(yè)營銷網(wǎng)站福建網(wǎng)絡(luò)seo關(guān)鍵詞優(yōu)化教程
  • 網(wǎng)站頁面的滑動怎么做現(xiàn)代營銷手段有哪些
  • 購物網(wǎng)站補貨提醒軟件怎么做重慶網(wǎng)站seo診斷
  • app開發(fā)企業(yè)網(wǎng)站建設(shè)seo專員是什么意思
  • 如何設(shè)置網(wǎng)站的默認(rèn)頁網(wǎng)站模板哪里好
  • 沈陽手機網(wǎng)站制作seo課程培訓(xùn)視頻
  • 房產(chǎn)網(wǎng)站開發(fā)功能報價合肥百度關(guān)鍵詞推廣
  • 網(wǎng)站建設(shè)功能需求廣告投放價目表
  • 申請域名需要多久seo鏈接優(yōu)化建議