![]() |
|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
![]() |
#1 |
註冊會員
|
![]() #include <stdio.h>
#include <stdlib.h> #include <time.h> #define SIZE 8; //暫設大小為8 void merge(int *data[], int length); void mergesort(int *data[], int left, int mid, int right); void main(void) { int data[] = {5,1,7,50,10,4,80,33}; int i = 0; srand(time(NULL)); int length = SIZE; printf("陣列大小:%d \n", length); printf("原陣列:"); for(i = 0; i < length; i ++){//亂數產生放入陣列中 //data[i] = rand(); printf("%d ", data[i]); } merge(*data, length); printf("\n排列後之陣列:"); for(i = 0; i < length; i ++){ printf("%d ", data[i]); } system("pause"); return(0); } void merge(int *data[], int length) { int count = 0, size = 1;//分割用 int left = 0, right = 0, mid = 0; //指標用 while(count < 5){ while(1){ mid = (left + size)-1; right = (mid + size); if(length <= right){ right = length - 1; if(right <= mid){ break;} } mergesort(*data, left, mid, right); left = right + 1; printf("\n%d %d", right, mid); } count += 1; size *= 2; } } void mergesort(int *data[], int left, int mid, int right) { int temp[] = {}; int i = 0, j = left, k = left; while(j<=mid){ temp[i] = *data[j]; i++; j++; } i = 0; while(j <= right){ if(temp[i] <= *data[j]){ *data[k] = temp[i]; k ++; i ++; }else{ *data[k] = *data[j]; k ++; j ++; } } while (k < j){ *data[k] = temp[i]; k = k+1; i = i+1; } } 想寫一個bottom-up的merge sort 但卻無法執行 應該是mergesort的副程式有問題吧 可是卻不知道到底問題出在哪> < ![]() 想請各位高手幫小女解惑 拜託各位大哥大姊了 ![]() |
![]() |
送花文章: 0,
![]() |
|
|
![]() |
||||
主題 | 主題作者 | 討論區 | 回覆 | 最後發表 |
撥放軟體語言轉換的問題.... | ECKO | 一般電腦疑難討論區 | 4 | 2003-09-09 11:03 AM |
問一個組合語言的問題 | turnoff | 一般電腦疑難討論區 | 0 | 2003-07-28 09:34 AM |
請問要看日.韓語言網頁的問題? | kana6468 | 一般電腦疑難討論區 | 1 | 2003-06-13 12:51 PM |
c語言撰寫的問題(鏈結陣列) | hugo0820 | 軟體應用問題討論區 | 0 | 2003-05-26 10:14 AM |
請問xp繁體語言包的問題.... | 721017 | 一般電腦疑難討論區 | 3 | 2003-04-27 02:38 PM |