第三週作業 氣泡排序和歸併排序

2021-06-21 06:04:51 字數 1907 閱讀 2878

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...