日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

插入排序之——直接插入排序(c/c++)

發(fā)布時間:2025/6/17 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 插入排序之——直接插入排序(c/c++) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

直接插入排序

如下,以C中數(shù)組為例來展示該算法。在insertSort函數(shù)中對待排序數(shù)組從第二位數(shù)開始進行比較(均與前一位進行比較),在內(nèi)循環(huán)中選定該次循環(huán)待排序數(shù)的位置并放置,直接插入是穩(wěn)定的排序方法。
直接插入排序算法的時間復(fù)雜度為o(n2),空間復(fù)雜度為1。
直接插入排序并不能保證每一次使得待排序數(shù)處于其最終位置(這是快排的特點)。將insertSort函數(shù)看為內(nèi)外兩個循環(huán),外循環(huán)每次選一個新的待排序數(shù),而內(nèi)循環(huán)將此待排序數(shù)及其之前所有數(shù)變?yōu)橛行虻摹C看螆?zhí)行一個外循環(huán),有序數(shù)的個數(shù)加一,從而有序數(shù)越來越多,直至最終有序,排序結(jié)束。
內(nèi)循環(huán)的實現(xiàn)是這個排序的重點。
排序函數(shù)insertSort的參數(shù)為一個c數(shù)組及數(shù)組長度。從而將原來的數(shù)組進行升序排序。算法實現(xiàn)如下:

#include<iostream> void insertSort(int* arr,int num); int main() {int a[10] = { 3, 2, 4, 6, 7, 5, 18, 9, 0, 1 };for (int i = 0; i < 10; i++){std::cout << a[i] << " ";}std::cout << '\n';insertSort(a, 10);for (int i = 0; i < 10;i++){std::cout << a[i] << " ";}return 0; } //上面的么得啥用。。。void insertSort(int* arr, int num) {int temp,i,j;//temp保存每一次的新數(shù),因為數(shù)組元素的移動會覆蓋掉新數(shù)for (i = 1; i<num; ++i)//所謂外循環(huán),每次放一個新數(shù)進去參與排序{if (arr[i]<arr[i-1])//若下標i以前的數(shù)不是有序的,執(zhí)行if語句內(nèi)容//此時的無序指的是下標0~i-1是有序的,需要將下標i中的數(shù)重新插入,使其變得有序{temp = arr[i];//保存每次的新數(shù)for (j=i-1; temp<arr[j]&&j>=0;--j)arr[j+1] = arr[j];arr[j+1] = temp;//在合適的位置上插入新數(shù)}} }

穩(wěn)定降序算法如下:

void insertSort(int* arr, int num) {int temp,i,j;for (i = 1; i<num; ++i){if (arr[i]>arr[i-1]){temp = arr[i];for (j=i-1; temp>arr[j]&&j>=0;--j)arr[j+1] = arr[j];arr[j+1] = temp;}} }

總結(jié)

以上是生活随笔為你收集整理的插入排序之——直接插入排序(c/c++)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。