排序算法-直接插入排序

1.直接插入排序

將數組中的所有元素依次跟前面已經排好的元素相比較,如果選擇的元素比已經排序的元素小,則交換,直到全部元素都比較過。

1)第一層循環,遍歷待比較的所有數組元素;

2)第二層循環,將本輪選擇的元素與已經排好序的元素相比較;

2.圖例 

 3.算法

//直接插入排序
//參數1:數組
//參數2:元素個數
void insertSort(int *arr,int num)
{
    for (int i = 1;i < num;i++)
    {
        for (int j = i; j > 0; j--)
        {
            if (arr[j] < arr[j - 1])
            {
                //交換元素
                swap(arr[j - 1], arr[j]);
            }
        }
    }
}

//打印數組
void printArr(int *arr, int num)
{
    for (int i = 0;i < num;i++)
    {
        cout << arr[i] << " ";
    }
}

int main()
{
    int a[] = { 9,1,2,0,7,4,8,6,3,5 };

    cout << "排序前: " << endl;
    printArr(a, 10);
    insertSort(a, 10);
    cout << "\n";
    cout << "排序後: " << endl;
    printArr(a, 10);
    return 0;
}

4.運行結果 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章