欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++實現(xiàn)折半插入排序(BinaryInsertSort)

 更新時間:2020年04月26日 08:47:58   作者:ChanJose  
這篇文章主要為大家詳細介紹了C++實現(xiàn)折半插入排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)折半插入排序的具體代碼,供大家參考,具體內(nèi)容如下

一、思路:

較插入排序,減少了比較的次數(shù),但是插入時間還是一樣。

(1)按二分查找的方法,查找V[i]在V[0],V[1]…V[i-1]中插入的位置;

(2)將插入位置的元素向后順移。

二、實現(xiàn)程序:

// 二分插入:較插入排序,減少了比較的次數(shù),但是插入時間還是一樣
// 時間復(fù)雜度還是:O(n*n)
#include <iostream>
using namespace std;
 
const int maxSize = 20;
 
template <class T>
void BinInsertSort(T arr[], const int left, const int right) {
 int i, j, low, high, mid;
 T temp;
 
 for(i = left+1; i <= right; i++) {
  temp = arr[i]; // 暫存arr[i]
  low = left;
  high = i-1; // low、high作為折半查找的上、下界
  while(low <= high) { // 用折半查找的方法,查找arr[i]的插入位置
   mid = (low + high) / 2;
   if(temp < arr[mid])
    high = mid - 1;
   else
    low = mid + 1;
  } // while
  for(j = i-1; j >= low; j--)
   arr[j+1] = arr[j]; // 順序后移
  arr[low] = temp; // 回填
 } // for
} // BinInsertSort
 
int main(int argc, const char * argv[]) {
 int i, n, arr[maxSize];
 
 cout << "請輸入要排序的數(shù)的個數(shù):";
 cin >> n;
 cout << "請輸入要排序的數(shù):";
 for(i = 0; i < n; i++)
  cin >> arr[i];
 cout << "排序前:" << endl;
 for(i = 0; i < n; i++)
  cout << arr[i] << " ";
 cout << endl;
 BinInsertSort(arr, 0, n-1);
 cout << "排序后:" << endl;
 for(i = 0; i < n; i++)
  cout << arr[i] << " ";
 cout << endl;
 return 0;
}

測試結(jié)果:

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Qt多版本共存使用實現(xiàn)組件增刪

    Qt多版本共存使用實現(xiàn)組件增刪

    本文主要介紹了Qt多版本共存使用實現(xiàn)組件增刪,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C語言數(shù)據(jù)結(jié)構(gòu)順序表中的增刪改(頭插頭刪)教程示例詳解

    C語言數(shù)據(jù)結(jié)構(gòu)順序表中的增刪改(頭插頭刪)教程示例詳解

    這篇文章主要為大家介紹了C語言數(shù)據(jù)結(jié)構(gòu)順序表中增刪改關(guān)于頭插頭刪的教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-02-02
  • C++??系統(tǒng)IO流介紹

    C++??系統(tǒng)IO流介紹

    這篇文章主要介紹了C++系統(tǒng)IO流,大部分人都是從輸出"Hello?World"開始的,本文會介紹C++中的IO細節(jié),需要的朋友可以參考一下,希望對大家有所幫助
    2021-12-12
  • C語言之棧和堆(Stack && Heap)的優(yōu)缺點及其使用區(qū)別

    C語言之棧和堆(Stack && Heap)的優(yōu)缺點及其使用區(qū)別

    本篇文章主要介紹了什么是棧(Stack) 、什么是堆( Heap),以及棧和堆的優(yōu)缺點,同時介紹了應(yīng)該什么時候使用堆和棧,有需要的朋友可以參考下
    2015-07-07
  • C++11中l(wèi)onglong超長整型和nullptr初始化空指針

    C++11中l(wèi)onglong超長整型和nullptr初始化空指針

    本文介紹?C++11?標準中新添加的?long?long?超長整型和?nullptr?初始化空指針,在?C++11?標準下,相比?NULL?和?0,使用?nullptr?初始化空指針可以令我們編寫的程序更加健壯,本文結(jié)合示例代碼給大家詳細講解,需要的朋友跟隨小編一起看看吧
    2022-12-12
  • c++基礎(chǔ)語法:構(gòu)造函數(shù)與析構(gòu)函數(shù)

    c++基礎(chǔ)語法:構(gòu)造函數(shù)與析構(gòu)函數(shù)

    構(gòu)造函數(shù)用來構(gòu)造一個對象,主要完成一些初始化工作,如果類中不提供構(gòu)造函數(shù),編譯器會默認的提供一個默認構(gòu)造函數(shù)(參數(shù)為空的構(gòu)造函數(shù)就是默認構(gòu)造函數(shù)) ;析構(gòu)函數(shù)是隱式調(diào)用的,delete對象時候會自動調(diào)用完成對象的清理工作
    2013-09-09
  • 深入理解C語言中編譯相關(guān)的常見錯誤

    深入理解C語言中編譯相關(guān)的常見錯誤

    本篇文章是對C語言中編譯相關(guān)的常見錯誤進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C語言中函數(shù)聲明與調(diào)用問題

    C語言中函數(shù)聲明與調(diào)用問題

    以下是對C語言中的函數(shù)聲明與調(diào)用進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • C語言中數(shù)據(jù)如何存儲進內(nèi)存揭秘

    C語言中數(shù)據(jù)如何存儲進內(nèi)存揭秘

    使用編程語言進行編程時,需要用到各種變量來存儲各種信息。變量保留的是它所存儲的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個變量時,就會在內(nèi)存中保留一些空間。您可能需要存儲各種數(shù)據(jù)類型的信息,操作系統(tǒng)會根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲什么
    2022-08-08
  • C++實現(xiàn)LeetCode(128.求最長連續(xù)序列)

    C++實現(xiàn)LeetCode(128.求最長連續(xù)序列)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(128.求最長連續(xù)序列),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07

最新評論