程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> 關於C++ >> C++拔出排序算法實例

C++拔出排序算法實例

編輯:關於C++

C++拔出排序算法實例。本站提示廣大學習愛好者:(C++拔出排序算法實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C++拔出排序算法實例正文


拔出排序

沒事愛好看看數據構造和算法,增長本身對數據構造和算法的熟悉,同時也增長本身的編程根本功。拔出排序是排序中比擬罕見的一種,懂得起來異常簡略。如今好比有以下數據須要停止排序:

10 3 8 0 6 9 2

當應用拔出排序停止升序排序時,排序的步調是如許的:

10 3 8 0 6 9 2 // 取元素3,去和10停止比較

3 10 8 0 6 9 2 // 因為10比3年夜,將10向後挪動,將3放置在本來10的地位;再取8與前一個元素10停止比較

3 8 10 0 6 9 2 // 同理挪動10;然後8再和3比,8年夜於3,所以不再挪動;如斯反復下去

……

0 2 3 6 8 9 10

也就是說,我們每次取一個元素,都要將該元素與之前曾經排序好的元素停止比擬。

拔出排序的最差時光龐雜度為O(n^2)。同時,該算法不須要開拓額定的空間,都是在原空間長進行挪動操作。

代碼完成


#include <iostream>
using namespace std;
 
void InsertSort(int arr[], int length)
{
     int temp;
     for (int i = 1; i < length; ++i) // 從數組中的第二個元素開端
     {
          temp = arr[i]; // 記載以後的元素
          int j = i - 1;
          while (j >= 0 && temp < arr[j]) // 將以後元素與之前的曾經排序好的序列元素停止挨個比擬
          {
               arr[j + 1] = arr[j]; // 曾經排序好的序列全體向後挪動
               --j;
          }
          arr[j + 1] = temp; // 拔出以後的元素
     }
}
 
int main()
{
     int arr[10] = {9, 2, 8, 2, 3, 2, 4, 10, 34, 5};
 
     InsertSort(arr, 10);
 
     for (int i = 0; i < 10; ++i)
     {
          cout<<arr[i]<<" ";
     }
     cout<<endl;
 
     return 0;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved