最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言實現(xiàn)選擇排序、直接插入排序、冒泡排序的示例

 更新時間:2016年02月27日 14:39:50   作者:Newerth  
這篇文章主要介紹了C++實現(xiàn)選擇排序、直接插入排序、冒泡排序的代碼示例,相當簡潔直觀,也是算法和數據結構學習中的基礎,需要的朋友可以參考下

選擇排序
選擇排序是一種簡單直觀的排序算法,其核心思想是:遍歷數組,從未排序的序列中找到最小元素,將其放到已排序序列的末尾。

時間復雜度:O(n^2)

穩(wěn)定性 :不穩(wěn)定

 /*
 * @brief  selection sort
 */
 void
 selection_sort(int a[], int n)
 {
   int i, j, min, tmp;
   
   for (i = 0; i < n - 1; ++i) {
     min = i;
     for (j = i+1; j < n; ++j) {
       if (a[j] < a[min]) {
         min = j;
       }
     }
     if (min != i) {
       tmp = a[min];
       a[min] = a[i];
       a[i] = tmp;  
     }        
   }
 }


直接插入排序
直接插入排序是一種比較容易理解的排序算法,其核心思想是遍歷數組,將數組中的元素逐個插入到已排序序列中。

時間復雜度:O(n^2)

穩(wěn)定性:穩(wěn)定

實現(xiàn):

 /* @brief insetion sort
 * insert the new element to the sorted subarray
 */
 void
 insertion_sort(int a[], int n)
 {
   int i, j, num;
 
   for (i = 1; i < n; ++i) {
     num = a[i];
     for (j = i - 1; j >= 0 && a[j] > num; --j)
       a[j+1] = a[j];
     a[j+1] = num;
   }
 }


冒泡排序
冒泡排序是最基本的排序算法之一,其核心思想是從后向前遍歷數組,比較a[i]和a[i-1],如果a[i]比a[i-1]小,則將兩者交換。這樣一次遍歷之后,最小的元素位于數組最前,再對除最小元素外的子數組進行遍歷。進行n次(n數組元素個數)遍歷后即排好序。外層循環(huán)為n次,內層循環(huán)分別為n-1, n-2…1次。

時間復雜度: O(n^2)

穩(wěn)定性:穩(wěn)定

實現(xiàn):

 /* @brief  bubble sort
 * move the smallest element to the front in every single loop
 */
 void
 bubble_sort(int a[], int n)
 {
   int i, j, tmp;
 
   for (i = 0; i < n; ++i) {
     for (j = n - 1; j > i; --j) {
       if (a[j] < a[j-1]) {
         tmp = a[j];
         a[j] = a[j-1];
         a[j-1] = tmp;
       }
     }
   }
 }

相關文章

  • C++?高精度乘法運算的實現(xiàn)

    C++?高精度乘法運算的實現(xiàn)

    本文主要介紹了C++?高精度乘法運算的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • C語言簡易通訊錄的實現(xiàn)代碼

    C語言簡易通訊錄的實現(xiàn)代碼

    這篇文章主要為大家詳細介紹了C語言簡易通訊錄的實現(xiàn)代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C++深入探究用NULL來初始化空指針是否合適

    C++深入探究用NULL來初始化空指針是否合適

    在C++11新特性中,我們用nullptr來表示指針空值,這是為什么呢?好好地NULL為什么不繼續(xù)使用呢?說明在創(chuàng)造C++的大佬們一定發(fā)現(xiàn)了什么Bug,本篇我們就一起來討論一下吧
    2022-05-05
  • C++之try catch 異常處理入門實例

    C++之try catch 異常處理入門實例

    我們通常希望自己編寫的程序能夠在異常的情況下也能作出相應的處理,而不至于程序莫名其妙地中斷或者中止運行了。在設計程序時應充分考慮各種異常情況,并加以處理
    2018-01-01
  • 詳解C語言結構體,枚舉,聯(lián)合體的使用

    詳解C語言結構體,枚舉,聯(lián)合體的使用

    這篇文章主要給大家介紹一下關于C語言中結構體、枚舉、聯(lián)合體的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考一下
    2022-07-07
  • 解析為何要關閉數據庫連接,可不可以不關閉的問題詳解

    解析為何要關閉數據庫連接,可不可以不關閉的問題詳解

    本篇文章是對為何要關閉數據庫連接,可不可以不關閉的問題進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • 深入理解C++中std::chrono庫的使用

    深入理解C++中std::chrono庫的使用

    在程序設計中,時間管理是一個核心概念,它不僅關系到程序的效率和性能,而且直接影響用戶體驗,C++作為一門高效的編程語言,提供了std::chrono庫,用于精確地處理和計算時間,下面就跟隨小編一起學習一下std::chrono庫的使用吧
    2023-12-12
  • c++版線程池和任務池示例

    c++版線程池和任務池示例

    這篇文章主要介紹了c++版線程池和任務池,實現(xiàn)任務執(zhí)行完畢線程退出.在linux下壓力測試通過
    2014-03-03
  • C++14 新特性之函數返回值類型推導

    C++14 新特性之函數返回值類型推導

    本文主要介紹了C++14 新特性之函數返回值類型推導,在模板編程和一些返回類型復雜或不易直接指明的情況下非常有用,下面就來具體介紹一下,感興趣的可以了解一下
    2024-05-05
  • vscode實現(xiàn)本地代碼自動同步到遠程機器的步驟

    vscode實現(xiàn)本地代碼自動同步到遠程機器的步驟

    這篇文章主要介紹了vscode實現(xiàn)本地代碼自動同步到遠程機器的步驟,本文分步驟給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06

最新評論

孙吴县| 通化县| 上思县| 苍溪县| 大同县| 万载县| 佳木斯市| 开化县| 德清县| 南投市| 海城市| 永胜县| 安远县| 瓮安县| 扬中市| 漳浦县| 堆龙德庆县| 台湾省| 葵青区| 城固县| 齐齐哈尔市| 岑溪市| 禹州市| 保康县| 涟水县| 克东县| 浦县| 玉林市| 大英县| 揭阳市| 辰溪县| 阳信县| 肃宁县| 凤翔县| 台南县| 东安县| 福清市| 运城市| 石家庄市| 富顺县| 临洮县|