菜鳥学アルゴリズム:入出力ファイルの大容量データ(快速並べ替え、配列並べ替え)

2787 ワード

野菜の鸟として、プログラミングを勉强する上で大変なことを知っています.ここで自分の勉强やアルゴリズムを记录して、自分で调べやすいようにします.もしあなたが私の文章に対して何か疑問や提案があれば、教えてください.
実はネット上ではすでにさまざまなおかみさんがいて、さまざまな優れたアルゴリズムを提供しています.優秀なブログもたくさんあります.初心者として、アルゴリズムを理解するために多くの時間を費やして、自分で書いたのは最適化のアルゴリズムではないですが、できるだけ分かりやすくしてください.
入出力ファイルの大容量データについて、以下のURLに優秀なものがあります.詳細に紹介します.
http://blog.csdn.net/v_JULYv/articale/detail/6451990
自分の速い順序付けのアルゴリズムを以下に示します.アルゴリズムには1千万個のランダムデータ(重複しない)を生成し、ファイルに出力し、1千万個のデータをファイルから取り出し、並べ替えて、1つのファイルに出力することが含まれています.
運転時間はちょっと長いかもしれませんが、マシンによって時間が違っています.上にリンクされている14 sのアルゴリズムは私のマシンで40 s運行しています.そして、ブログを書く時は私のマシンの運行が多いので、10 s+.
#include 
#include 
#include 
using namespace std;
#define N 10000000
int num[N];
int sortNum[N];
void swap(int *a,int *b)
{
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
}
void quickSort(int a[],int m,int n)
{
	if(ma[L])
			L++;
		a[R]=a[L];
	}
	a[L]=temp;
	quickSort(a,m,L-1);
	quickSort(a,L+1,n);
	}
}
void main()
{
	//  N     dataUnsort   
	clock_t beginTime=clock();/
	int temp;
	for (int i=0;i>sortNum[j])
		j++;
	InPutFile.close();
	quickSort(sortNum,0,j-1);

	clock_t SortTime=clock();//
	// N       data   

	ofstream OutPutFile2;
	OutPutFile2.open("data.txt");
	for (int i=0;i
上にリンクされている説明図を見て、自分ではよく分かりません.時間もあまりないので、直接に配列を使うと思いました.すると、下の配列の下に表示されるプログラムがあります.
個人的な感覚では、配列の下に表示する方法を使って、迅速な並べ替えが必要ではないです.運行時間は快速なソート法よりもっと短いですが、私のマシンでは時間があまり変わらないです.本当におかしいです.
 
  
#include 
#include 
#include 
using namespace std;
#define N 10000000
int num[N];
bool sortNum[N];
void swap(int *a,int *b)
{
	int temp;
	temp=*a;
	*a=*b;
	*b=temp;
}
void main()
{
	//  N     dataUnsort   
	clock_t beginTime=clock();/
	int temp;
	for (int i=0;i>j){sortNum[j]=1;}
	InPutFile.close();

	clock_t SortTime=clock();//
	// N       data   
	cout<
プログラミング芸術の上の博文はまたまとめて並べ替えることに言及して、個人は以下のこのリンクの上の表現が更に分かりやすいと感じます.
http://blog.csdn.net/morewindows/article/details/6678165
各位の侠客は何か意見や提案がありましたら、ご指導をお願いします.この文章が私と同じように新学の「菜々鳥」に役立つと嬉しいです.