直接插入排序和氣泡排序比較

2021-08-20 09:24:48 字數 1353 閱讀 8192

思想:將陣列中的所有元素依次和前面的已經排好序的元素相比較(依次),如果選擇的元素比已排序的元素小,則交換,直到全部元素都比較過。

**實現:

sort.h:

#pragma once

#include

using

namespace

std;

#include

//直接插入排序

void insertsort (int* a,size_t n)

else

break;

}a[end+1] = tmp;}}

test.cpp :

#include "sort.h"

void print(int a,int len)

cout

; int len = sizeof(a)/sizeof(a[0]);

cout

<

print(a,len);

insertsort(a,len);

cout

<

print(a,len);

}int main ()

基本思想就是:從無序序列頭部開始,進行兩兩比較,根據大小交換位置,直到最後將最大(小)的資料元素交換到了無序佇列的隊尾,從而成為有序序列的一部分;下一次繼續這個過程,直到所有資料元素都排好序。

演算法的核心在於每次通過兩兩比較交換位置,選出剩餘無序序列裡最大(小)的資料元素放到隊尾。

**實現:

void bubblesort(int* a,size_t n)

}if( 0 == exchange )//陣列本身為公升序,如果一趟排序結束,並沒有進行交換,那麼直接跳出迴圈(減少迴圈次數,公升高效率)

break;

--end;}}

1. 兩者的時間複雜度和空間複雜度還有穩定性相同

2 .插入排序相比較來說更優:

像這種特殊情況時,直接插入排序總共比較了n次;e而氣泡排序比較了(n-1)+(n-2)次。

插入排序 直接插入排序

直接插入排序演算法思想 將整個資料表分成左右兩個子表,其中左子表為有序表,右子表為無序表 整個排序過程就是將右子表中的元素逐個插入到左子表中,直到右子表為空,而左子表成為新的有序表。演算法過程分析 將待排序的元素存放在陣列r n 1 中,在初始狀態下,r 0 為監視哨,r 1 為有序區,r 2 r ...

插入排序 直接插入排序

一.插入排序的基本思想 將乙個記錄插入已排序好的有序表中,從而得到乙個新的記錄數加1的有序表。要點 設立哨兵,作為臨時儲存和判斷陣列邊界之用。所謂的哨兵,就是即將插入的記錄。二.示例 如果碰見相等的元素,會被插到後面,所以,相等元素的前後順序沒有改變,插入排序是穩定的。三.演算法實現 public ...

插入排序 直接插入排序

直接插入排序的基本思想 將乙個記錄插入到已排序好的有序表中,然後得到乙個新記錄數增1的有序表。也就是 先將序列的第1個記錄看成是乙個有序的子串行,然後從第2個記錄逐個進行插入,直至整個序列有序為止。如果碰見乙個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒...