linux centos fedora gcc c 冒泡 插入 大頂堆 排序
1、生成50萬個資料,按行從1-500000存到test1.txt檔案中
2、打亂50萬個資料,按行存到test2.txt檔案中
3、使用排序方法進行排序,將結果儲存在test3.txt檔案中
4、冒泡法排序
bubblesort(array3, num_max);
5、插入法排序
insertsort(array3, num_max);
6、大頂堆法排序
heapify_sort(array3, num_max);
vi txtnum.c
gcc txtnum.c -o a.out
./a.out
原理不解釋了,如果資料過大,可以改寫為5000,**如下:
#include #include #include #include #define num_max 500000
void swap(int arr, int a, int b)
void heapify(int array3, int n, int i)
int max = i;
int c1 = 2 * i + 1;
int c2 = 2 * i + 2;
if (c1 < n && array3[c1] > array3[max])
if (c2 < n && array3[c2] > array3[max])
if (max != i) }
void build_heapify(int array3, int n)
}void heapify_sort(int array3, int n)
}void bubblesort(int *array3 ,int n)
} }}void insertsort(int *array3,int n)
} }}int main( int argc, char *ar** )
for (j=0; jfclose(fp1);
for ( k=0;k< num_max; k++)
fp2 = fopen("test2.txt","w");
for ( k=0;k< num_max; k++)
fclose(fp2);
fp2 = fopen("test2.txt","r");
for ( k=0;k< num_max; k++)
fclose(fp2);
fp3 = fopen("test3.txt","w");
//bubblesort(array3, num_max);
//insertsort(array3, num_max);
heapify_sort(array3, num_max);
for ( k=0;k< num_max; k++)
fclose(fp3);
}
大頂堆排序
堆排序的思想借助了二叉排序樹,時間複雜度 o nlgn 空間複雜度o n 首先需要構建堆,堆分為大頂堆和小頂堆,如果是大頂堆,任意乙個元素,滿足arr i arr 2 i 1 arr i arr 2 i 2 小頂堆滿足arr i arr 2 i 1 arr i arr 2 i 2 堆本質上是乙個完全...
大頂堆排序
利用大頂堆排序 自己建立堆!大頂堆 include using namespace std 交換陣列中兩個數的函式 void swap int arr,int i,int j heapify的過程 void heapify int tree,int n,int i void build heap i...
堆排序(大頂堆)
ifndef maxheap define maxheap includeusing namespace std const int capacity 100 class maxheap void push const int data void initialize int a,int thesi...