1. 程式人生 > >(第20講)關於排序的各種演算法的彙總的題目

(第20講)關於排序的各種演算法的彙總的題目

1、排序演算法的穩定性:假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,ri=rj,且rirj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。

穩定的排序演算法有:冒泡、插入、歸併

不穩定的有:選擇、希爾、快排、堆排

2、一個遞迴必須包含:終止條件和遞迴部分

3、快排在什麼情況下最弱:排有序序列,降成N的平方

一、選擇題

1.某內排序方法的穩定性是指)

A.該排序演算法不允許有相同的關鍵字記錄 B.該排序演算法允許有相同的關鍵字記錄

C.平均時間為0n log n

)的排序方法D.以上都不對

2.下面給出的四種排序法中(    )排序法是不穩定性排序法。

   A. 插入          B. 冒泡             C. 二路歸併       D. 堆積

3.下列排序演算法中,其中()是穩定的。

A. 堆排序,氣泡排序             B. 快速排序,堆排序

 C. 直接選擇排序,歸併排序       D. 歸併排序,氣泡排序

4.穩定的排序方法是(

A.直接插入排序和快速排序       B.折半插入排序和起泡排序

C.簡單選擇排序和四路歸併排序   D.樹形選擇排序和shell排序

5.下列排序方法中,哪一個是穩定的排序方法?(

 )

A.直接選擇排序      B.二分法插入排序      C.希爾排序        D.快速排序

6.若要求儘可能快地對序列進行穩定的排序,則應選(A.快速排序 B.歸併排序 C.氣泡排序)。

7.如果待排序序列中兩個資料元素具有相同的值,在排序前後它們的相互位置發生顛倒,則稱該排序演算法是不穩定的。()就是不穩定的排序方法。

A.起泡排序    B.歸併排序    CShell排序    D.直接插入排序    E.簡單選擇排序

8.若要求排序是穩定的,且關鍵字為實數,則在下列排序方法中應選()排序為宜。

A.直接插入 B.直接選擇 C.堆 D.快速 E.基數

9.若需在O(nlog2n)的時間內完成對陣列的排序,且要求排序是穩定的,則可選擇的排序方法是)。

 A. 快速排序       B. 堆排序       C. 歸併排序        D. 直接插入排序

10.下面的排序演算法中,不穩定的是(

      A.起泡排序  B.折半插入排序   C.簡單選擇排序    D.希爾排序     E.基數排序   F.堆排序。

11.下列內部排序演算法中:

A.快速排序   B.直接插入排序 C. 二路歸併排序 D. 簡單選擇排序 E. 起泡排序   F. 堆排序

1其比較次數與序列初態無關的演算法是(

2)不穩定的排序演算法是(

3)在初始序列已基本有序(除去n個元素中的某k個元素後即呈有序,k<<n)的情況下,排序效率最高的演算法是(

4)排序的平均時間複雜度為O(n•logn)的演算法是()為O(n•n)的演算法是(

12.排序趟數與序列的原始狀態有關的排序方法是(    )排序法。

   A.插入           B. 選擇             C. 冒泡           D. 快速

13.下面給出的四種排序方法中,排序過程中的比較次數與排序方法無關的是。(    )

A.選擇排序法      B. 插入排序法       C. 快速排序法       D. 堆積排序法

14.對下列四種排序方法,在排序中關鍵字比較次數同記錄初始排列無關的是(    )

A.直接插入       B. 二分法插入       C. 快速排序        D. 歸併排序

15.在下列排序演算法中,哪一個演算法的時間複雜度與初始排序無關()。

A直接插入排序  B. 氣泡排序     C. 快速排序     D. 直接選擇排序

16.比較次數與排序的初始狀態無關的排序方法是(     )

A.直接插入排序       B.起泡排序      C.快速排序       D.簡單選擇排序

17.資料序列(89104562012)只能是下列排序演算法中的(    )的兩趟排後的結果。

A.選擇排序        B.氣泡排序        C.插入排序        D.堆排序

18.資料序列(2149810620)只能是下列排序演算法中的(    )的兩趟排序後的結果。

A. 快速排序        B. 氣泡排序         C. 選擇排序        D. 插入排序

19.對一組資料(8447251521)排序,資料的排列次序在排序的過程中的變化為

1 84 47 25 15 21 2 15 47 25 84 21 3 15 21 2584 47 4 15 21 25 47 84

則採用的排序是 (     )

A. 選擇           B. 冒泡          C. 快速           D. 插入

20.對序列{1597820-14}進行排序,進行一趟後資料的排列變為{49-1820715};則採用的是()排序。

A. 選擇          B. 快速          C. 希爾           D. 冒泡

21.若上題的資料經一趟排序後的排列為{9157820-14},則採用的是()排序。

A.選擇      B.       C. 直接插入    D. 冒泡

22.下列排序演算法中(    )不能保證每趟排序至少能將一個元素放到其最終的位置上。

A.快速排序 B. shell排序 C. 堆排序   D.氣泡排序

23.下列排序演算法中(    )排序在一趟結束後不一定能選出一個元素放在其最終位置上。

A. 選擇          B. 冒泡          C. 歸併       D. 

24.下列序列中,()是執行第一趟快速排序後所得的序列。

   A. [68111869]   [239373]      B. [68116923]   [189373]

   C. [9373]  [6811692318]      D. [6811692318]  [9373]

25.有一組資料(1597820-174用快速排序的劃分方法進行一趟劃分後資料的排序為 (    )(按遞增序)。

A.下面的BCD都不對。        B9784-171520

C2015897-147     D. 94787-11520

26.一組記錄的關鍵碼為(467956384084),則利用快速排序的方法,以第一個記錄為基準得到的一次劃分結果為()。

A(38,40,46,56,79,84)        B. (40,38,46,79,56,84)

C(40,38,46,56,79,84)        D. (40,38,46,84,56,79)

27. 在下面的排序方法中,輔助空間為On)的是(   ) 

     A.希爾排序      B. 堆排序        C. 選擇排序       D. 歸併排序

28.下列排序演算法中,在待排序資料已有序時,花費時間反而最多的是(     )排序。

    A冒泡 B. 希爾 C. 快速 D.

29.下列排序演算法中,在每一趟都能選出一個元素放到其最終位置上,並且其時間效能受資料初始特性影響的是:()。

A. 直接插入排序     B. 快速排序     C. 直接選擇排序      D. 堆排序

30. 對初始狀態為遞增序列的表按遞增順序排序,最省時間的是()演算法,最費時間的是()演算法。

   A. 堆排序   B. 快速排序   C. 插入排序    D. 歸併排序

31. 就平均效能而言,目前最好的內排序方法是(    )排序法。

A. 冒泡   B. 希爾插入   C. 交換 D. 快速

32.如果只想得到1000個元素組成的序列中第5個最小元素之前的部分排序的序列,用()方法最快。

A.起泡排序   B.快速排列 CShell排序 D.堆排序 E.簡單選擇排序

答案:

1.D

2.D

3.D

4.B

5.B  

6.B

7.C,E

8.A

9.C

10.C,D,F

11.1D,C 11.2A,D,F

11.3B 11.4(A,C,F)(B,D,E)

12.C,D

13.A

14.B,D

15.D

16.D

17.C

18.A

19.A

20.C

21.C

22.B

23.C

24.C

25.A

26.C

27.D

28.C

29.B

30.C,B

31.D

32.D

部分答案解釋如下:

18. 對於後三種排序方法兩趟排序後,序列的首部或尾部的兩個元素應是有序的兩個極值,而給定的序列並不滿足。

20. 本題為步長為3的一趟希爾排序。            24.樞軸是73

49. 小根堆中,關鍵字最大的記錄只能在葉結點上,故不可能在小於等於n/2的結點上。

64. 因組與組之間已有序,故將n/k個組分別排序即可,基於比較的排序方法每組的時間下界為O(klog2k),全部時間下界為O(nlog2k)

二、判斷題:

1.當待排序的元素很大時,為了交換元素的位置,移動元素要佔用較多的時間,這是影響時間複雜度的主要因素。(

2.內排序要求資料一定要以順序方式儲存。

3.排序演算法中的比較次數與初始元素序列的排列無關。()

4.排序的穩定性是指排序演算法中的比較次數保持不變,且演算法能夠終止。(

5.在執行某個排序演算法過程中,出現了排序碼朝著最終排序序列位置相反方向移動,則該演算法是不穩定的。(

6.直接選擇排序演算法在最好情況下的時間複雜度為ON)。(

7.兩分法插入排序所需比較次數與待排序記錄的初始排列狀態相關。()

8.在初始資料表已經有序時,快速排序演算法的時間複雜度為O(nlog2n )。(

9.在待排資料基本有序的情況下,快速排序效果最好。(

10.當待排序記錄已經從小到大排序或者已經從大到小排序時,快速排序的執行時間最省。(

11.快速排序的速度在所有排序方法中為最快,而且所需附加空間也最少。(

12.堆肯定是一棵平衡二叉樹。(

13.堆是滿二叉樹。()【

14.(101884670343945586610)是堆。(

15.在用堆排序演算法排序時,如果要進行增序排序,則需要採用大根堆。(

16.堆排序是穩定的排序方法。(

17.歸併排序輔助儲存為O1)。(

18.在分配排序時,最高位優先分配法比最低位優先分配法簡單。(

19氣泡排序和快速排序都是基於交換兩個逆序元素的排序方法,氣泡排序演算法的最壞時間複雜性是O(n*n),而快速排序演算法的最壞時間複雜性是O(nlog2n),所以快速排序比氣泡排序演算法效率更高。

20.交換排序法是對序列中的元素進行一系列比較,當被比較的兩個元素逆序時,進行交換,氣泡排序和快速排序是基於這類方法的兩種排序方法,氣泡排序演算法的最壞時間複雜性是On*n,()而快速排序演算法的最壞時間複雜性是Onlog2n);所以快速排序比氣泡排序效率更高。

21.快速排序和歸併排序在最壞情況下的比較次數都是O(nlog2n)。(

22.在任何情況下,歸併排序都比簡單插入排序快。(

23.歸併排序在任何情況下都比所有簡單排序速度快。(

24.快速排序總比簡單排序快。(

25. 中序周遊(遍歷)平衡的二叉排序樹,可得到最好排序的關鍵碼序列。(

三、填空題

1.若不考慮基數排序,則在排序過程中,主要進行的兩種基本操作是關鍵字的______和記錄的_____

2. 外排序的基本操作過程是______________

3. 屬於不穩定排序的有__________

4.分別採用堆排序,快速排序,氣泡排序和歸併排序,對初態為有序的表,則最省時間的是_____演算法,最費時間的是______演算法。

5. 不受待排序初始序列的影響,時間複雜度為O(N2)的排序演算法是_____,在排序演算法的最後一趟開始之前,所有元素都可能不在其最終位置上的排序演算法是_____

6.直接插入排序用監視哨的作用是_______

7.對n個記錄的表r[1..n]進行簡單選擇排序,所需進行的關鍵字間的比較次數為_______

8. 用連結串列表示的資料的簡單選擇排序,結點的域為資料域data ,指標域 next ;連結串列首指標為head ,連結串列無頭結點。

selectsort(head)

   p=head;

while(p(1)_______)

{q=p;r=(2)_______

      while((3)______ )

{if ((4)_______) q=r;

         r=(5)_______ ;

}

     tmp=q->data; q->data=p->data; p->data=tmp;p= (6)_______ ;

     } 

9.下面的c函式實現對連結串列head進行選擇排序的演算法,排序完畢,連結串列中的結點按結點值從小到大連結。請在空框處填上適當內容,每個空框只填一個語句或一個表示式:

#include<stdio.h>

typedef structnode {char data; struct node *link; }node;

node*select(node *head)

{node*p,*q,*r,*s;

p=(node*)malloc(sizeof(node));

  p->link=head; head=p;

while(p->link!=null)

    {q=p->link; r=p;

     while ((1)____)

相關推薦

20關於排序各種演算法彙總題目

1、排序演算法的穩定性:假定在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中,ri=rj,且ri在rj之前,而在排序後的序列中,ri仍在rj之前,則稱這種排序演算法是穩定的;否則稱為不穩定的。 穩定的排序演算法有

為什麼我要放棄javaScript資料結構與演算法十章—— 排序和搜尋演算法

本章將會學習最常見的排序和搜尋演算法,如氣泡排序、選擇排序、插入排序、歸併排序、快速排序和堆排序,以及順序排序和二叉搜尋演算法。 第十章 排序和搜尋演算法 排序演算法 我們會從一個最慢的開始,接著是一些效能好一些的方法 先建立一個數組(列表)來表示待排序和搜尋的資料結構。 function Arra

IPFS官方最新週刊20

翻  譯丨IPFS中國社群:IP君 文章來源丨www.ipfs.cn 原文地址丨https://mp.weixin.qq.com/s/-ddMC0w3n8NdIILXtqzjLQ · IPFS週刊第20期的地址:檢視原文 · 歡迎來到IPFS週刊 行星際檔案系統(IPFS)是

C++面向物件程式設計50道程式設計題20

C++面向物件程式設計50道程式設計題(第20題) 摘要:C++程式設計實習是為學生提供了一個既動手又動腦,獨立實踐的機會,將課本上的理論知識和實際有機的結合起來,鍛鍊學生的分析問題和解決問題的能力,提高學生運用所學知識解決實際問題的能力。   本專輯為程式設計入門者、高校計算機軟體

IPFS官方週報20

IPFS 週報-20 日期:2018年11月27日 歡迎閱讀IPFS週報! InterPlanetary File System (IPFS,星際檔案系統)是一種新型的,基於內容和身份的,超媒體分發協議。IPFS使得開發完全分散式的應用程式成為可能。它旨在使網路更快、更安全、更開

SpringBoot專欄_web:模板引擎Thymeleaf使用實戰,圖文結合附帶原始碼下載7

簡介: Thymeleaf是一款用於渲染XML/XHTML/HTML5內容的模板引擎。類似JSP, Velocity,FreeMaker等,它也可以輕易的與Spring MVC等Web框架進行整合 作為Web應用的模板引擎。與其它模板引擎相比,Thymeleaf最大的特點是能夠 直接在

SpringBoot專欄:日誌配置那些事_log4j_logback_slf4j5

開篇: 以後開發的時候,日誌記錄方法的呼叫,不應該來直接呼叫日誌的實現類,而是呼叫日誌抽象層裡面的方法; 給系統裡面匯入slf4j的jar和 logback的實現jar   圖解 每一個日誌的實現框架都有自己的配置檔案。使用slf4j以後,配置檔案還是

SpringBoot專欄-配置檔案終結篇_知識點彙總

配置檔案YML SpringBoot使用一個全域性的配置檔案,配置檔名是固定的;  application.properties  、application.yml 配置檔案的作用:修改SpringBoot自動配置的預設值;SpringBoot在底層都給我們自動配

12234樹和2-3樹

2-3-4樹:2-3-4 樹在電腦科學中是階為4 的B樹。它可以 2-3-4樹 在O(log n)時間內查詢、插入和刪除。 2-3-4 樹把資料儲存在叫做元素的單獨單元中。它們組合成節點。每個節點都是下列之一: 2-節點,就是說,它包含 1 個元素和 2 個兒子;

【直播預告】:Java Spring Boot實戰系列課程:Spring Boot 2.0實戰高併發分散式快取

內容概要:Redis作為開源分散式高併發快取,在網際網路公司高併發系統中廣泛使 用,本次課程講解如何使用最新的Java Spring Data實戰Redis,以及底層API的實現原始碼。主講人:徐雷(阿里雲棲特邀Java專家)直播時間:2019年1月1日 週二 今晚20:00直播地點:【阿里Java技術進階】

德哥PG系列課程直播10:PostgreSQL 時空資料排程實踐

知識點 近鄰查詢,拼車,空間熱點消除 學習資料 1、滴滴打車派單系統思考 資料庫設計與實現 - 每月投入6140元, 1天最多可盈利117億 -_-! 背景:打車類應用,如果完全按排程系統來派單,而非搶單的話,排程系統要非常的健碩。比如滴滴打車,如何處理供給雙方的需求,並高效的完成派單呢?隨著業務的需求

黑馬程式設計師-Oracle

黑馬程式設計師-Oracle(第八講  建立使用者peng ) 1、在資料庫中建立一個使用者peng,將scott使用者中的內容匯入peng, 首先: 1)匯出一份scott使用者下的資料 在g:盤下建立一個temp資料夾,將從scott使用者中匯出的資料放入temp資料夾

德哥PG系列課程直播11:PostgreSQL 在社交應用領域的最佳實踐

知識點 關係資料,大V熱點,正反向關係,計數器快取 學習資料 1、三體PCC大賽題目 - facebook微博 like場景 資料庫設計與效能壓測背景:高可用架構的一個PCC大賽,看了一下比賽規則,發現PostgreSQL很適合做這個場景,原樣復刻,使用PG實現以及效能表現到底如何?2、使用facebo

臺灣國立大學機器學習技法.聽課筆記 :Soft-Margin Support Vector Machine

我們從第一講到第三講,都是說Hard-Margin SVM,要求全部的點都要進行正確劃分,太完美了;也許有些點是noise,但是還是Hard-MarginSVM。 我們現在就想能不能加一些容忍度,容忍一些錯誤點。於是我們就得出以下寫法: 於是我們得出了新的SVM的式子: 但是這個式子並不是線

2javascript中的引數傳遞和java中的引數傳遞

 1、javascript中的引數傳遞:值傳遞 (1)在js函式傳遞中,當基本型別(number, string, boolean, null, undefined, symbol)變數作為引數傳遞時,函式內部對引數的任何操作都不會改變變數的值。  (2)當object型別

聽課筆記: 歸納理論(臺大機器學習

上一講重點是一些分析機器學習可行性的重要思想和概念,尤其是生長函式(growth function) 和突破點(break point) 的理解。這一講開篇再介紹一個界函式(bounding function)的概念:是指當(最小)突破點為k 時,生長函式m(N) 可能的最大值,記為B(N, k)。顯然,當

17堆的陣列實現

堆: 1、實際是一種完全二叉樹,只有最後一層會不滿,所以用陣列實現,陣列都會填滿,不會有空缺 2、堆的左右子節點都不大於父節點,即父節點大於或者等於其子節點 程式如下: /**  * 堆:基於陣列的  * 堆實際上是一個完全二叉樹,並且其左右子節點都不大於父節點(父節點大於

3Java如何獲得使用者在控制檯輸入的東西、如何從檔案中獲得資料

 /**  * 從檔案中輸入方法;(File、Scanner)和(File、FileInputStream、InputStreamReader、BufferedReader)  * 從控制面板輸入方法(Scanner)和(InputStreamReader、BufferedReader)  */ packag

數據機構與算法之美學習筆記:B+樹48

存儲空間 計算 數據庫 數據行 劃分數 需求 散列 動態 不可 一、解決問題的前提是定義清楚問題 通過對一些模糊需求進行假設,來限定要解決問題的範圍 根據某個值查找數據,比如 select * from use where id=1234; 根據區間值來查詢某些數據比