国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++排序之直接插入排序法

2019-11-11 03:30:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
直接插入排序算法是將一個(gè)記錄插入到已排序好的有序表中,從而得到一個(gè)新的,記錄數(shù)增1的有序表。即:先將序列的第1個(gè)記錄看成是一個(gè)有序的子序列,然后從第2個(gè)記錄逐個(gè)進(jìn)行插入,直至整個(gè)序列有序?yàn)橹埂?p>要點(diǎn):設(shè)立哨兵,作為臨時(shí)存儲(chǔ)和判斷數(shù)組邊界之用。

如果碰見(jiàn)一個(gè)和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后順序沒(méi)有改變,從原無(wú)序序列出去的順序就是排好序后的順序,所以插入排序是穩(wěn)定的。

算法實(shí)現(xiàn)代碼如下:

#include <iostream>using namespace std;void PRint(int a[], int n ){  	cout<<n <<":";  	for(int j= 0; j<n; j++){  		cout<<a[j] <<" ";  	}  	cout<<endl;  }  void InsertSort(int a[], int n)  {  	for(int i= 1; i<n; i++){  		if(a[i] < a[i-1]){               //若第i個(gè)元素大于i-1元素,直接插入。小于的話,移動(dòng)有序表后插入  			int j= i-1;   			int x = a[i];        //復(fù)制為哨兵,即存儲(chǔ)待排序元素  			a[i] = a[i-1];           //先后移一個(gè)元素  			while(x < a[j]){  //查找在有序表的插入位置  				a[j+1] = a[j];  				j--;         //元素后移 				//printf("j=%d",j);				if (j<=0)				{					break;				}			}  			a[j+1] = x;      //插入到正確位置  		}  		print(a,n);           //打印每趟排序的結(jié)果  	}  }  int main(){  	int a[9] = {3,1,5,7,2,4,9,6,6};  	InsertSort(a,9);  	print(a,9);  }  計(jì)算結(jié)果如下:

9:1 3 5 7 2 4 9 6 6

9:1 3 5 7 2 4 9 6 6

9:1 3 5 7 2 4 9 6 6

9:1 2 3 5 7 4 9 6 6

9:1 2 3 4 5 7 9 6 6

9:1 2 3 4 5 7 9 6 6

9:1 2 3 4 5 6 7 9 6

9:1 2 3 4 5 6 6 7 9

9:1 2 3 4 5 6 6 7 9


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 土默特左旗| 广安市| 新兴县| 铜山县| 张家港市| 潞西市| 安达市| 兴业县| 库尔勒市| 开平市| 泸西县| 拜泉县| 宜州市| 灌阳县| 万源市| 卢氏县| 广元市| 罗定市| 竹北市| 邵东县| 明溪县| 延长县| 龙游县| 馆陶县| 金乡县| 开鲁县| 桃江县| 共和县| 翁牛特旗| 宜兴市| 肇源县| 阿巴嘎旗| 东光县| 青海省| 清新县| 满洲里市| 宁河县| 临邑县| 乡城县| 盐源县| 万宁市|