插入排序之——直接插入排序(c/c++)
生活随笔
收集整理的這篇文章主要介紹了
插入排序之——直接插入排序(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)如下:
穩(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贪吃蛇游戏(c/c++)
- 下一篇: 成绩排序习题