第24講 set・sortによる並び替え 
第3話 setによる本格的並び替えソフト
コード例
#include<iostream>
#include<ctime>
#include<stdlib.h>
#include<set>
using namespace std;
using namespace System;
using namespace System::Threading;
void f();
int *m;
int n;
int main(){
  //srand(static_cast<unsigned int>(time(0)));
  m=(int *)malloc(2000000);
  cout<<"発生させるデータ数をキーボードから入力してください。"<<endl<<"データ数=";
  scanf("%d",&n);
  m=(int *)malloc(2000000);
  set<int> s;
  f();
  DateTime^ hj=DateTime::Now; //開始時間
  int j;
  for(j=0;j<n;j++)s.insert(m[j]);
  cout<<"並び替え後"<<endl;
  set<int>::iterator i;
  j=0;
  for(i=s.begin();i!=s.end();i++){
    if(*i<10)cout<<" "<<*i<<" ";
    if(*i>=10 && *i<100)cout<<" "<<*i<<" ";
    if(*i>=100)cout<<*i<<" ";
    if(j>0 && (j+1)%15==0)cout<<endl;
    j++;
  }
  cout<<endl;
  DateTime^ ow=DateTime::Now; //終了時間
  TimeSpan sa=ow->Subtract(*hj); //経過時間の計算
  cout<<"setによる並び替え"<<endl;
  cout<<"データ数"<<n<<"の場合"<<endl;
  cout<<"並び替え時間は"<<sa.TotalSeconds<<"秒です。"<<endl;
}
void f(){
  int i;
  i=0;
  while(i<n){
    m[i]=rand()%1000;
    if(m[i]<10)cout<<" "<<m[i]<<" ";
    if(m[i]>=10 && m[i]<100)cout<<" "<<m[i]<<" ";
    if(m[i]>=100)cout<<m[i]<<" ";
    if(i>0 && (i+1)%15==0)cout<<endl;
    i++;
  }
  cout<<endl;
}
実行例
入門
最大値排除繰り返し法自己再帰シングルスレッドのデータ
初心者
ただし、公平を期すため
int main(){
  //srand(static_cast<unsigned int>(time(0)));
  m=(int *)malloc(2000000);
  cout<<"発生させるデータ数をキーボードから入力してください。"<<endl<<"データ数=";
  scanf("%d",&n);
  f();
  DateTime^ hj=DateTime::Now; //開始時間
  g(0,n);
  cout<<"並び替え後"<<endl;
  int i=0;
  while(i<n){
    if(m[i]<10)cout<<" "<<m[i]<<" ";
    if(m[i]>=10 && m[i]<100)cout<<" "<<m[i]<<" ";
    if(m[i]>=100)cout<<m[i]<<" ";
    if(i>0 && (i+1)%15==0)cout<<endl;
    i++;
  }
  cout<<endl;
  DateTime^ ow=DateTime::Now; //終了時間
  TimeSpan sa=ow->Subtract(*hj); //経過時間の計算

  cout<<"シングルスレッド版"<<endl;
  cout<<"データ数"<<n<<"の場合"<<endl;
  cout<<"並び替え時間は"<<sa.TotalSeconds<<"秒です。"<<endl;
}
と表示の時間も入れている。

結果は予想通り、圧倒的に速く約22倍でした。

第2話へ 第4話へ

戻る

C言語 C++講義第1部へ
C言語 C++講義第2部へ
VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)