排序算法-直接插入排序

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.运行结果 

 

 

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