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

歡迎訪問 生活随笔!

生活随笔

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

c/c++

数据结构之折半插入排序图文详解及代码(C++实现)

發(fā)布時間:2025/3/20 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构之折半插入排序图文详解及代码(C++实现) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

問題:

對待排序的數(shù)組r[1..n]中的元素進行直接插入排序,得到一個有序的(從小到大)的數(shù)組r[1..n]。

算法思想:

1、設待排序的記錄存放在數(shù)組r[1..n]中,r[1]是一個有序序列。

2、循環(huán)n-1次,每次使用折半查找法,查找r[i](i=2,..,n)在已排好的序列r[1..i-1]中的插入位置,然后將r[i]插入表長為i-1的序列r[1..i-1],直到將r[n]插入表長為n-1的有序序列r[1..n-1],最后得到一個表長為n的有序序列。

圖解:

?

代碼:

#include<iostream> using namespace std; #define MAXSIZE 20//順序表的最大長度 typedef int KeyType;//定義關鍵字類型為整型 typedef int InfoType; typedef struct {KeyType key;//關鍵字項InfoType otherinfo;//其他數(shù)據(jù)項 }RedType; typedef struct {RedType r[MAXSIZE+1];//r[0]閑置或做哨兵單元int length;//順序表的長度 }SqList;//順序表類型void BInsertSort(SqList &L)//對順序表L做折半插入排序 {int low,high,m;for(int i=2;i<=L.length;i++){L.r[0]=L.r[i];//將待插入的記錄暫存到監(jiān)視哨中l(wèi)ow=1;high=i-1;//置查找區(qū)間初值while(low<=high)//在r[low..high]中折半查找插入的位置{m=(low+high)/2;if(L.r[0].key<L.r[m].key)high=m-1;//插入點在前一子表elselow=m+1;//插入點在后一子表}//whilefor(int j=i-1;j>=high+1;--j)L.r[j+1]=L.r[j];//L.r[high+1]=L.r[0];} }int main() {SqList L;for(int i=1;i<=10;i++)L.r[i].key=11-i;L.length=10;for(int i=1;i<=L.length;i++)cout<<L.r[i].key<<" ";cout<<endl;BInsertSort(L);for(int i=1;i<=L.length;i++)cout<<L.r[i].key<<" ";cout<<endl;return 0; }

運行結果:

《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的数据结构之折半插入排序图文详解及代码(C++实现)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。