插入排序還是堆排序 25分

2021-10-10 22:23:51 字數 1569 閱讀 9100

根據維基百科的定義:

插入排序是迭代演算法,逐一獲得輸入資料,逐步產生有序的輸出序列。每步迭代中,演算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。

堆排序也是將輸入分為有序和無序兩部分,迭代地從無序部分找出最大元素放入有序部分。它利用了大根堆的堆頂元素最大這一特徵,使得在當前無序區中選取最大元素變得簡單。

現給定原始序列和由某排序演算法產生的中間序列,請你判斷該演算法究竟是哪種排序演算法?

輸入格式:

輸入在第一行給出正整數 n (≤100);隨後一行給出原始序列的 n 個整數;最後一行給出由某排序演算法產生的中間序列。這裡假設排序的目標序列是公升序。數字間以空格分隔。

輸出格式:

首先在第 1 行中輸出insertion sort表示插入排序、或heap sort表示堆排序;然後在第 2 行中輸出用該排序演算法再迭代一輪的結果序列。題目保證每組測試的結果是唯一的。數字間以空格分隔,且行首尾不得有多餘空格。

輸入樣例 1:

1031

2875

9460

1237

8594

60

輸出樣例 1:

insertion sort12

3578

9460

輸入樣例 2:

1031

2875

9460

6451

0327

89

輸出樣例 2:

heap sort54

3102

6789

#include

#include

#include

using

namespace std;

int n;

void

insertion_sort

(int arr,

int brr)

if(equal

(arr, arr + n, brr)

) flag =1;

}}void

heap_sort

(int arr,

int brr)

if(equal

(arr, arr + n, brr)

) flag =1;

swap

(arr[0]

, arr[i -1]

);}}

intmain()

for(

int i =

0; i < n;

++i)

cin >> brr[i]

;insertion_sort

(arr1, brr)

;heap_sort

(arr2, brr)

;return0;

}

7 49 插入排序還是歸併排序 (25 分)

根據維基百科的定義 插入排序是迭代演算法,逐一獲得輸入資料,逐步產生有序的輸出序列。每步迭代中,演算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。歸併排序進行如下迭代操作 首先將原始序列看成 n 個只包含 1 個元素的有序子串行,然後每次迭代歸併兩個相鄰的有序子串...

插入排序,希爾排序,堆排序

本文將介紹三種排序演算法 插入排序,希爾排序,堆排序。本文所有例子都是使用公升序 一.插入排序 演算法思想 維護乙個有序陣列,將要插入的資料與有序陣列自最後乙個元素直到合適位置的數一一比較。eg 有序陣列 1,3,5,6,7 現在待插入資料為2,那麼他將會和7,6,5,3,依次作比較,當帶插入資料小...

插入排序 歸併排序 堆排序

include void insertion sort int arr,int len arr j 1 temp int main int n 5 insertion sort a,n for int i 0 iprintf d a i includevoid merge sort recursiv...