C++實(shí)現(xiàn)簡單的希爾排序Shell Sort實(shí)例
更新時(shí)間:2014年07月24日 12:11:32 投稿:shichen2014
這篇文章主要介紹了C++實(shí)現(xiàn)簡單的希爾排序Shell Sort實(shí)例,對于正在學(xué)習(xí)算法的朋友很有借鑒價(jià)值,需要的朋友可以參考下
本文以實(shí)例形式講述了基于C++實(shí)現(xiàn)簡單的希爾排序Shell Sort的方法,是一個(gè)很經(jīng)典的算法,具體實(shí)現(xiàn)代碼如下:
#include <iostream> using namespace std; void ShellSort(int* iArray,int length) { //初始化jump等于length int jump = length; //標(biāo)記本趟檢測是否進(jìn)行了交換, // 若進(jìn)行了 則還有下次從頭開始的檢測, // 否則停止,繼續(xù)改變jump的值 做另一趟排序 bool isSwap; while(jump != 0) { //jump每次/2 jump = jump / 2; do{ int i = 1; //初始化表示沒有進(jìn)行交換 isSwap = false; while( i <= length - jump) { if(iArray[i] > iArray[i+jump]) { int temp = iArray[i]; iArray[i] = iArray[i+jump]; iArray[i+jump] = temp; isSwap = true; } i++; } }while(isSwap == true);//如果進(jìn)行了交換說明 增量為jump的序列 //可能存在不是有序的 在檢測一遍 //否則說明增量為jump的序列是有序的 } } int main() { int iArray[] = {0,50,123,36,25,200,36,95,70,14,10,321,1,3,5,8}; ShellSort(iArray,15); for(int i = 1; i <= 15; i++) { cout<<iArray[i]<<" "; } cout<<endl; return 0; }
相關(guān)文章
如何實(shí)現(xiàn)一定概率選中某一個(gè)字母
本篇文章是對如何實(shí)現(xiàn)一定概率選中某一個(gè)字母的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++簡明圖解分析靜態(tài)成員與單例設(shè)計(jì)模式
與靜態(tài)數(shù)據(jù)成員不同,靜態(tài)成員函數(shù)的作用不是為了對象之間的溝通,而是為了能處理靜態(tài)數(shù)據(jù)成員,靜態(tài)成員函數(shù)沒有this指針。既然它沒有指向某一對象,也就無法對一個(gè)對象中的非靜態(tài)成員進(jìn)行默認(rèn)訪問2022-06-06C語言宏定義結(jié)合全局變量的方法實(shí)現(xiàn)單片機(jī)串口透傳模式
今天小編就為大家分享一篇關(guān)于C語言宏定義結(jié)合全局變量的方法實(shí)現(xiàn)單片機(jī)串口透傳模式,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12C++編程中__if_exists與__if_not_exists語句的用法
這篇文章主要介紹了C++編程中__if_exists與__if_not_exists語句的用法,是C++中用于判斷指定的標(biāo)識符是否存在的基礎(chǔ)的條件判斷語句,需要的朋友可以參考下2016-01-01