亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++的排序算法

2020-02-24 14:31:41
字體:
來源:轉載
供稿:網友

很多剛剛接觸C++的小伙伴們來說,應該都有簡單的了解過排序算法,那么你知道C++的排序算法有哪幾種嗎?下面我們就和武林小編一起去看看關于C++的排序算法的內容吧。

SortAlgorithm.h

?

?

#include <vector>
using namespace std;

?

class SortAlgorithm
{
public:
??? SortAlgorithm(int = 10);
??? void displayVector();
??? void swap(int &, int &);

??? void insertSort();???????????????????? //O(n^2)
??? void selectSort();??????????????????? //O(n^2)
??? void mergeSort();??????????????????? //O(n log n)
??? void bubbleSort();????????????????? //O(n^2)
??? void quickSort(? int , int? );???? //worst: O(n^2),? best: O(n log n)

??? int partition( int , int? );
??? void sortSubVector(int , int );
??? void merge(int , int , int , int );
private:
??? int size;
??? vector< int > source;
??? vector< int > temp;

};

?

SortAlgorithm.cpp

?

?

#include <iostream>
#include <cstdlib> // prototypes for functions srand and rand
#include <ctime> // prototype for function time
#include <algorithm> // prototype for sort function
#include "SortAlgorithm.h" // class BinarySearch definition
using namespace std;

?

SortAlgorithm::SortAlgorithm(int vectorSize)
{
??? size = ( vectorSize > 0 ? vectorSize : 10 ); // validate vectorSize
??? srand( time( 0 ) ); // seed using current time

?? // fill vector with random ints in range 10-99
??? for ( int i = 0; i < size; i++ )
?????????? source.push_back( 10 + rand() % 90 ); // 10-99

??? temp = source;
}

void SortAlgorithm::insertSort()
{
??? int insert;
??? for(int next = 1; next < size; next++){
??????? insert = temp[next];
??????? int moveItem = next;

??????? while((moveItem > 0) && (temp[moveItem - 1] > insert)){
??????????? temp[moveItem] = temp[moveItem - 1];
??????????? moveItem--;
??????? }

??????? temp[moveItem] = insert;
??? }
}

void SortAlgorithm::selectSort()
{
??? int loop = size - 1;
??? int smallest;

??? for(int i = 0; i < loop; i++){
??????? smallest = i;

??????? for(int j = i + 1; j < size; j++){
??????????? if(temp[j] < temp[smallest])
??????????????? smallest = j;
??????? }

??????? swap(temp[i], temp[smallest]);
??? }
}

void SortAlgorithm::mergeSort()
{
??? sortSubVector(0, size - 1);
}

void SortAlgorithm::bubbleSort()
{
?????? int comp; // used to control for loop and for subscripts
?????? bool swapCheck = true; // was a swap made?

??? for ( int pass = 1; pass < size && swapCheck; pass++ ) {
??????? swapCheck = false; // assume no swaps will be made

????? // traverse and compare unsorted part of vector
??????? for ( comp = 0; comp < size - pass; comp++ ){

???????? // compare adjacent vector elements
??????????? if ( temp[ comp ] > temp[ comp + 1 ] ) {
??????????????? swap(temp[comp], temp[comp + 1]);
??????????????? swapCheck = true;
???????????????? } // end if

??????? } // end inner for
??? } // end outer for
}

void SortAlgorithm::quickSort(int first, int last )
{
?? int currentLocation;

?? if ( first >= last )
????? return;

?? currentLocation = partition( first, last ); // place an element
?? quickSort( first, currentLocation - 1 ); // sort left side
?? quickSort( currentLocation + 1, last ); // sort right side
} // end function quickSortHelper

// partition the vector into multiple sections
int SortAlgorithm::partition( int left, int right )
{
?? int position = left;

?? // loop through the portion of the vector
?? while ( true )
?? {
?? //first: from right ro left
????? while ( temp[ position ] <= temp[ right ] && position != right )
???????? --right;

????? if ( position == right )
???????? return position;

????? if ( temp[ position ] > temp[ right ])
????? {
???????? swap( temp[ position ], temp[ right ] );
???????? position = right;
????? } // end if
?? //second: from left to right
????? while ( temp[ left ] <= temp[ position ] && left != position )
???????? ++left;

????? if ( position == left )
???????? return position;

????? if ( temp[ left ] > temp[ position ] )
????? {
???????? swap( temp[ position ], temp[ left ] );
???????? position = left;
????? } // end if
?? } // end while
} // end function partition

void SortAlgorithm::sortSubVector(int low, int high)
{
??? if((high - low) >= 1){
??????? int middle1 = (low + high) / 2;
??????? int middle2 = middle1 + 1;

??????? /*cout << "split:?? ";
??????? displaySubVector(low, high);
??????? cout << endl << "?????? ";
??????? displaySubVector(low, middle1);
??????? cout << endl << "?????? ";
??????? displaySubVector(middle2, high);
??????? cout << endl << endl;*/

??????? sortSubVector(low, middle1);
??????? //cout << "Stop here1. low = " << low << ", middle1 = " << middle1 << endl;
??????? sortSubVector(middle2, high);
??????? //cout << "Stop here2. middle2 = " << middle2 << ", high = " << high << endl;

??????? merge(low, middle1, middle2, high);

??? }
}

void SortAlgorithm::merge(int left, int middle1, int middle2, int right)
{
??? int leftIndex = left;
??? int rightIndex = middle2;
??? int combinedIndex = left;
??? vector<int> combined(size);

??? /*cout << "merge:?? ";
??? displaySubVector(left, middle1);
??? cout << endl << "?????? ";
??? displaySubVector(middle2, right);
??? cout << endl;*/

??? while(leftIndex <= middle1 && rightIndex <= right){
??????? if(temp[leftIndex] <= temp[rightIndex])
??????????? combined[combinedIndex++] = temp[leftIndex++];
??????? else
??????????? combined[combinedIndex++] = temp[rightIndex++];
??? }

??? if(leftIndex == middle2){
??????? while(rightIndex <= right)
??????????? combined[combinedIndex++] = temp[rightIndex++];
??? }
??? else{
??????? while(leftIndex <= middle1)
??????????? combined[combinedIndex++] = temp[leftIndex++];
??? }

??? for(int i = left; i <= right; i++)
??????? temp[i] = combined[i];

??? /*cout << "?????? ";
??? displaySubVector(left, right);
??? cout << endl << endl;*/
}

void SortAlgorithm::swap(int &x, int &y)
{
??? int t;

??? t = x;
??? x = y;
??? y = t;
}

void SortAlgorithm::displayVector()
{
??? for(int i = 0; i < size; i++){
??????? cout << " " << temp[i];
??????? if((i + 1) % 10 == 0)
??????????? cout << endl;
??? }

??? cout << endl;

??? temp = source;
}

?

main.cpp

?

?

#include <iostream>
#include "SortAlgorithm.h" // class BinarySearch definition
#include "BucketSort.h"
using namespace std;

?

int main()
{
??? int num;
??? cout << "Please input the integer number you want to sort:? ";
??? cin >> num;

??? SortAlgorithm sortVector(num);
??? cout << "Unsort elements: /n";
??? sortVector.displayVector();

??? sortVector.insertSort();
??? cout << "/nInsert sorted elements: /n";
??? sortVector.displayVector();

??? sortVector.selectSort();
??? cout << "/nSelect sorted elements: /n";
??? sortVector.displayVector();

??? sortVector.mergeSort();
??? cout << "/nMerge sorted elements: /n";
??? sortVector.displayVector();

??? sortVector.bubbleSort();
??? cout << "/nBubble sorted elements: /n";
??? sortVector.displayVector();

??? sortVector.quickSort(0, num - 1);
??? cout << "/nQuick sorted elements: /n";
??? sortVector.displayVector();

?? /*BucketSort bucketSortVector( num ); // create BucketSort object

?? cout << "Vector elements in original order:/n";
?? bucketSortVector.displayElements();

?? bucketSortVector.sort(); // sort the vector

?? cout << "/nVector elements in sorted order:/n";
?? bucketSortVector.displayElements();*/
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林技術頻道。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩激情片免费| 成人国产精品日本在线| 欧美日韩另类字幕中文| 国产精品美女网站| 一区二区三欧美| 亚洲人成电影在线| 成人福利视频在线观看| 91夜夜未满十八勿入爽爽影院| 九九精品在线播放| 97在线观看免费高清| 最近2019中文字幕一页二页| 久久激情视频久久| 日韩精品高清在线观看| 国产91精品最新在线播放| 亚洲国产精品中文| 欧美老肥婆性猛交视频| 国产一区二区三区网站| 亚洲综合色激情五月| 成人妇女淫片aaaa视频| 亚洲第一页中文字幕| 亚洲精品中文字幕av| y97精品国产97久久久久久| 亚洲国产精品电影在线观看| 亚洲图片欧美日产| 亚洲天堂免费观看| 粉嫩av一区二区三区免费野| 国产精品嫩草影院久久久| 久久久国产视频| 狠狠躁夜夜躁人人爽超碰91| 久久久人成影片一区二区三区观看| 久久精品99无色码中文字幕| 国产精品av免费在线观看| 日韩一区二区精品视频| 美女国内精品自产拍在线播放| 精品久久久久久中文字幕一区奶水| 精品日韩视频在线观看| 国外成人在线直播| 亚洲成人a**站| 欧美黄色片免费观看| 97成人超碰免| 国产精品三级美女白浆呻吟| 一区二区福利视频| 亚洲一区www| 亚洲人在线视频| 久久久久久国产免费| 欧美日韩高清在线观看| 国产日韩欧美中文在线播放| 国产69精品久久久久99| 久久露脸国产精品| 欧美国产高跟鞋裸体秀xxxhd| 日韩电影中文字幕在线观看| 在线观看日韩视频| 中文字幕日韩欧美| 日韩在线视频观看| 久久天天躁夜夜躁狠狠躁2022| www.日韩免费| 91精品视频网站| 久久久天堂国产精品女人| 26uuu国产精品视频| 欧美日韩中文字幕在线| 久久精品国产91精品亚洲| 91精品国产高清久久久久久久久| 欧美成人在线免费视频| 欧美激情视频一区| 国产精品1区2区在线观看| 久久国产一区二区三区| 色妞一区二区三区| 日韩成人av一区| 免费97视频在线精品国自产拍| 91精品综合久久久久久五月天| 538国产精品一区二区免费视频| 久久中国妇女中文字幕| 68精品国产免费久久久久久婷婷| 91精品91久久久久久| 日韩欧美黄色动漫| 亚洲男子天堂网| 久久人人看视频| 国产中文字幕亚洲| 国产日韩欧美日韩| 色播久久人人爽人人爽人人片视av| 欧美在线国产精品| 日本高清不卡在线| 91在线高清免费观看| 日韩免费av一区二区| 国内伊人久久久久久网站视频| 亚洲色图50p| 91精品91久久久久久| 国产精品一区久久| 日韩精品中文字幕视频在线| 日韩在线资源网| 成人黄色在线播放| 精品视频—区二区三区免费| 国产成人福利网站| 伊人伊成久久人综合网小说| 久久久久久久香蕉网| 欧美福利在线观看| 97人人爽人人喊人人模波多| 在线视频中文亚洲| 日韩电视剧免费观看网站| 午夜精品久久久久久久99热| 国内精品中文字幕| 69**夜色精品国产69乱| zzijzzij亚洲日本成熟少妇| 日韩精品视频在线播放| 久久九九精品99国产精品| 精品免费在线观看| 欧美亚洲国产视频| 91大神福利视频在线| 欧美丰满片xxx777| 亚洲免费视频一区二区| 欧美性xxxxxxx| yw.139尤物在线精品视频| 久久久久亚洲精品成人网小说| 色一情一乱一区二区| 日韩中文字幕视频在线| 精品国内产的精品视频在线观看| 国产成人+综合亚洲+天堂| 久久国产精品99国产精| 亚洲国产欧美日韩精品| 精品中文字幕在线2019| 一区二区三区日韩在线| 国产精品视频一区二区高潮| 精品伊人久久97| 国产欧美精品xxxx另类| 国产精品高精视频免费| 亲子乱一区二区三区电影| 日韩精品高清视频| 精品久久久香蕉免费精品视频| 精品国产乱码久久久久久天美| 久久久这里只有精品视频| 国产欧美最新羞羞视频在线观看| 欧美多人乱p欧美4p久久| 欧美一级片免费在线| 日韩av中文字幕在线免费观看| 欧美视频专区一二在线观看| 91精品久久久久久久久久另类| 欧美高清视频在线播放| 久久精品99国产精品酒店日本| 久久九九全国免费精品观看| 国产精品亚洲激情| 国产欧美一区二区| 成人激情在线观看| 在线国产精品视频| 日韩在线观看网址| 另类色图亚洲色图| 国产精品视频一区国模私拍| 久久69精品久久久久久久电影好| 久久精品国产清自在天天线| 国产欧美日韩专区发布| 少妇激情综合网| 国产一区二区黑人欧美xxxx| 色综合导航网站| 精品久久久久久国产| 日韩av手机在线看| 欧美日韩免费区域视频在线观看| 日韩在线观看免费高清完整版| 国产精品成人在线| 亚洲成人激情小说| 欧洲s码亚洲m码精品一区| 国产一区二区激情| 久久久久久亚洲精品不卡| 蜜臀久久99精品久久久久久宅男| 成人激情在线观看| 97在线免费观看|