設定 EYNY 為首頁  |  加入我的最愛
伊莉討論區
熱門搜尋: 海角七號  韓劇  癡女OL  搖擺女孩  相聲  最遙遠的距離  jazmine sullivan  黃金勇者 


休閒聊天
學術文化
感情感性
興趣交流
家庭事務
旅遊交流
飲食交流
家族門派
貼圖分享
動漫交流
音樂世界
美容打扮
潮流資訊
影視娛樂
電玩遊戲
連線遊戲
網絡遊戲
交易廣場
下載分享
BT下載區
CB下載區
電腦資訊
數碼產品
手機交流
網站事務
體育運動
時事新聞
上班一族
博彩娛樂
成人話題


 
標題: [討論] 同樣氣泡排序法 ...(dev c 語言)
honyihon

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 2192482
精華 0
積分 935
帖子 333
潛水 9576 米
閱讀權限 20
註冊 2007-8-26
發表於 2007-12-31 04:51 PM  資料 文集 短消息 
維克斯討論區

同樣氣泡排序法 ...(dev c 語言)

[顯示] [隱藏]
題目:用bubble sort排序寫程式排數字
下面程式有哪些錯誤?須改哪些地方(稍微解釋一下)
或者是各位大大有更好寫法的?請po
下面我有看到po 有用到flag的用法 能不用嗎?有沒有布用的寫法?
用c語言編寫

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void swap(int *array1,int *array2);
void sort(int *array);
int main()
{
    int i,j,num;
    int array;
    printf("how many number you want?");
    scanf("%d",&num);
    printf("enter the integers");
    for(i=0;i<num;i++){
    printf("NO %d:",i+1);
    scanf("%d",&array);
    }
    sort(array);
    printf("using the bubble sort....");
    for(j=0;j<=num;j++){
    printf("%d",array[j]);
    }
    system("pause");
    return(0);
}                        
void swap(int *array1,int *array2)
{
     int temp;
     temp=*array1;
     *array1=*array2;
     *array2=temp;
}
void sort(int *array)
{
     int num;
     for(int i=0;i<num;i++)
     {
         if(array>array[i+1])
         swap(array,array);
         }                  
     
}

頂部
superjoeliao

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 2783234
精華 0
積分 349
帖子 311
潛水 8154 米
閱讀權限 20
註冊 2007-11-15
發表於 2007-12-31 09:56 PM  資料 文集 短消息 
伊莉遊戲

以下為我的覺得有錯的地方

void sort(int *array)
{
     int num;
     for(int i=0;i<num;i++)
     {
         if(array>array[i+1])
         swap(array,array);
         }                  
     
}
//////////////////////////////////////
//應該改成
void sort(int *array)
{
     int num;
     for(int i=0;i<num;i++)
     {
         if(array>array[i+1])
         swap((array+i),(array+i+1));
         }                  
     
}

頂部
honyihon

Rank: 2Rank: 2
小學生(200/1000)
潛水  
UID 2192482
精華 0
積分 935
帖子 333
潛水 9576 米
閱讀權限 20
註冊 2007-8-26
發表於 2008-1-1 03:50 PM  資料 文集 短消息 
伊莉遊戲

回復 #2 superjoeliao 的帖子

照你這樣改還是不行ㄟ .....有沒有更好的方法 ...各位大大麻煩在看一下= = 剛剛那位大大最多跑沒錯誤可是還是沒有跑出結果= =

頂部
playcoo

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10
贊助會員
潛水  
UID 1641663
精華 0
積分 494
帖子 90
潛水 4222 米
閱讀權限 95
註冊 2007-6-26
發表於 2008-1-1 04:44 PM  資料 文集 短消息 
伊莉遊戲



QUOTE:
原帖由 honyihon 於 2008-1-1 03:50 PM 發表
照你這樣改還是不行ㄟ .....有沒有更好的方法 ...各位大大麻煩在看一下= = 剛剛那位大大最多跑沒錯誤可是還是沒有跑出結果= =

你所指的有flag,應該是指我弄的那個巢狀for loop吧,那個只是為了精簡for loop計算用
,如果覺得不想要,可以把flag相關都拿掉。

基本上看你上述code,其他小地方你自己再研究,光sort()就有問題,只這樣的單一for loop
,是沒辦法整個sort完的,除非你自己有研究出單一for loop的演算法。

舉個簡單例子,你用數列 3 2 1 ,自己用手寫模擬你的sort()一遍就知道了!

頂部
flylinux

Rank: 1
幼兒生(0/200)
潛水  
UID 931155
精華 0
積分 121
帖子 19
潛水 325 米
閱讀權限 10
註冊 2007-3-14
發表於 2008-1-2 10:59 AM  資料 主頁 文集 短消息 
伊莉遊戲

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAX 10
#define SWAP(x,y) {int t; t = x; x = y; y = t;}

void selsort(int[]);  // 選擇排序
void insort(int[]);   // 插入排序
void bubsort(int[]);  // 氣泡排序

int main(void) {  
    int number[MAX] = {0};
    int i;  

    srand(time(NULL));

    printf("排序前:");
    for(i = 0; i < MAX; i++) {
        number = rand() % 100;
        printf("%d ", number);
    }

    printf("\n請選擇排序方式:\n");
    printf("(1)選擇排序\n(2)插入排序\n(3)氣泡排序\n:");
    scanf("%d", &i);

    switch(i) {
        case 1:
            selsort(number); break;
        case 2:
            insort(number); break;
        case 3:
            bubsort(number); break;
        default:
            printf("選項錯誤(1..3)\n");
    }

    return 0;
}

void selsort(int number[]) {
    int i, j, k, m;

    for(i = 0; i < MAX-1; i++) {
        m = i;
        for(j = i+1; j < MAX; j++)
            if(number[j] < number[m])
                m = j;

        if( i != m)
            SWAP(number, number[m])

        printf("第 %d 次排序:", i+1);
        for(k = 0; k < MAX; k++)
            printf("%d ", number[k]);
        printf("\n");
    }
}

void insort(int number[]) {
    int i, j, k, tmp;

    for(j = 1; j < MAX; j++) {
        tmp = number[j];
        i = j - 1;
        while(tmp < number) {
            number[i+1] = number;
            i--;
            if(i == -1)
                break;
        }
        number[i+1] = tmp;

        printf("第 %d 次排序:", j);
        for(k = 0; k < MAX; k++)
            printf("%d ", number[k]);
        printf("\n");
    }
}

void bubsort(int number[]) {
    int i, j, k, flag = 1;

    for(i = 0; i < MAX-1 && flag == 1; i++) {
        flag = 0;
        for(j = 0; j < MAX-i-1; j++) {
            if(number[j+1] < number[j]) {
    [ 瀏覽完整內容請先註冊或登入會員。]


ㄚ琪琪的家
http://job.achi.idv.tw
頂部
 




當前時區 GMT+8, 現在時間是 2008-10-7 05:59 AM

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 3.144665 second(s), 9 queries , Gzip enabled

清除 Cookies - 聯繫我們 - 廣告查詢 [威旭代理] - 伊莉討論區 - Archiver
重要聲明:本討論區是以即時上載留言的方式運作,伊莉討論區對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。伊莉討論區有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。