timer.h
#ifndef timer_h
#define timer_h
#include class timer
;#endif
timer.cpp
#include "timer.h"
timer::timer()
void timer::resettimer()
double timer::getelapsedtime()
main.cpp
#include "timer.h"
#include #include #include using namespace std;
long getnumofdata(char* filename)
cout << "the number of data is: " << numofdata << endl;
fin.close();
return numofdata;
}void loaddatafromfile(char* filename, long* data, long num)
cout << "file loading complete!" << endl;
fin.close();
}void writedatatofile(char* filename, long* data, long num)
fout.close();
}void bubblesort(long* data, long numofdata)
} } cout << "sorting complete!" << endl;
cout << "\nelapsed time: " << timer.getelapsedtime() << " seconds!" << endl;
writedatatofile("data_bubble.txt", data, numofdata);
}//一次歸併排序
//將兩個相鄰序列data[s]~data[m]和data[m+1]~data[t]歸併到輔助陣列auxiliary[s]~auxiliary[t]中
void merge(long* data, long* auxiliary, long s, long m, long t)
else
}//對未處理完的序列進行收尾處理
if (i <= m) }
else }
}//一趟歸併排序,n:待排序資料總個數,h:待排序的有序序列的長度
void mergepass(long* data, long* auxiliary, long n, long h)
if (i < n - h)
else }
}void mergesort(long* data, long* auxiliary, long n)
cout << "sorting complete!" << endl;
cout << "\nelapsed time: " << timer.getelapsedtime() << " seconds!" << endl;
writedatatofile("largew_merge.txt", data, n);
}void main()
氣泡排序的執行時間如下:
歸併排序的執行時間如下:
有上圖可以看出,不同演算法的執行效率差距如此之大,真的是演算法改變世界啊!
第三週作業 氣泡排序和歸併排序
include include stdafx.h include include include include using namespace std define num amount 10000000 已知為1000000個資料 template int getarraylen t array...
演算法筆記(三) 氣泡排序和歸併排序
一 氣泡排序 氣泡排序的作用就是反覆交換相鄰未按次序排列的資料。1 氣泡排序實現,公升序版本 2def bubblesort data 3 例如 data 3,2,1 很明顯迴圈檢查 data 0 data 0 1 data 1 data 1 1 這2個表示式是否成立就行了4 不需要也不可能去檢查 ...
氣泡排序與歸併排序
方法一 思想是相鄰元素逐個比較,然後將最大的放在後面。每遍歷完一次,就會有乙個元素就位,所以時間複雜度為o n 2 public class linearrecur int low 0 int high b.length int index 0 bubblesort b,low,high for i...