排序演算法——直接插入排序

旦願發表於2020-11-29

基本思想

直接插入排序是一種最簡單的排序方法,它的基本思想是:初始時,有序表有一個元素,而無序表中有n-1個元素,每次進行排序時將無序表的第一個元素插入到有序表的適當位置,重複n-1次完成排序

舉個例子:
在這裡插入圖片描述

升序排列

在這裡插入圖片描述

對於上面這個陣列來說,我們的有序表中有8這個元素,然後將無序表中的6插入到有序表中
,比較8和6兩個元素然後交換。

然後將9插入到有序表中,發現此時是最大的元素於是插入到8的後面。

然後將12插入到有序表中,發現此時是最大的元素於是插入到12的後面。

在這裡插入圖片描述

然後將1插入到有序表中,發現此時1比12小,交換1和12。

在這裡插入圖片描述

此時1比9小,交換1和9。直到1排到最小的位置

程式碼實現如下:

void Math_insertSort(int data[],int length)
{
    int i, j, t;
    for (i = 0; i < length - 1; i++)
    {
        t = data[i + 1];
        j = i;

        while (j > -1 && t < data[j])
        {
          	data[j+1] = data[j];
            j--;
        }

        data[j + 1] = t;
    }
}

相關文章