排序演算法(二)

2022-03-31 01:37:29 字數 821 閱讀 9415

基本思想:

將乙個記錄插入到已經排序好的有序表中,從而得到乙個新、記錄數增1的有序表。即:先將序列的第乙個記錄看成是乙個有序的子串行,然後從第二個記錄逐個進行插入,直至整個序列有序為止。

要點:設立哨兵,作為臨時儲存和判斷陣列邊界之用。

直接插入排序示例:

如果碰見乙個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,所以插入排序是穩定的。

演算法的實現:

public

class

insertsort3 ;

public

static

void

main(string args)

}public

static

void sort(int arr, int

n) a[j + 1] = x; //

插入到正確的位置

} }

}

效率:時間複雜度:o(n²)

其他的插入排序有二分插入排序,2-路插入排序。

演算法 排序演算法(二)

選擇排序,選擇所有元素中最小的乙個放在第一位,然後從剩下的元素中選擇最小的放第二位,依此類推,完成選擇排序。include define m 10001 using namespace std int a m void selectsort int n int t a i a i a min a m...

排序演算法 二

不穩定的排序演算法 簡單選擇排序 每一趟從待排序的資料元素中選出最小 或最大 的乙個元素,順序放在已排好序的數列最前,直到全部待排序的資料元素排完。void selectsort int data int size size if i k swap data i data k 快排 非隨機 快速排序...

排序演算法(二)

快速排序 快速排序 elementtype median3 elementtype a,int left,int right void qsort elementtype a,int left,int right swap a low a right 1 將基準換到正確的位置 qsort a,lef...