我正在使用Turbo C,並且對我的代碼進行了一些查詢。我只是困惑...程序首先要求一個數字列表(你不應該輸入超過20)。當用戶鍵入數字時,它們被放置在數組list[]
中。一旦用戶通過鍵入0 *(不在列表中)*終止列表,程序將調用sort()
函數,該函數對列表中的值進行排序。在最後一部分,其中有/*I AM NOW CONFUSED WITH THIS PART*/
的評論,是我需要你的幫助的部分...請幫助我。排序數組問題
File Edit Run Compile Project Options Debug Break/watch
╒════════════════════════════════════ Edit ════════════════════════════════════╕
│ Line 1 Col 43 Insert Indent Tab Fill Unindent * C:NONAME.C │
│ │
│ #define MAXSIZE 20 /* size of buffter */ │
│ void sort(int[], int); /* prototype */ |
│ |
│ main() |
│ { |
│ static int list[MAXSIZE]; /* buffer for numbers */ |
│ int size = 0; /* size 0 before input */ |
│ int dex; /* index of array */ |
│ do /* get list of numbers */ |
│ { |
│ printf("Type number: "); |
│ scanf("%d", &list[size]); |
│ } |
│ while(list[size++] != 0); /* exit loop on 0 */ |
│ |
│ sort(list,--size); /* sort nubmers */ |
│ for(dex=0; dex<size; dex++) /* print sorted list */ |
│ printf("%d\n", list[dex]); |
│ |
│ getche(); |
│ } |
│ |
│ void sort(int list[], int size) |
│ { |
│ int out, in, temp; /* I AM NOW CONFUSED */ |
│ |
│ for(out=0; out<size-1; out++) /* IN THIS PART! */ |
│ for(in=out; in<size; in++) |
│ if(list[out] > list[in]) |
│ { |
│ temp=list[in]; |
| list[in]=list[out]; |
│ list[out]=temp; |
│ } |
│ } |
│ |
│ |
├─────────────────────────────────── Watch ────────────────────────────────────┤
│ │
└──────────────────────────────────────────────────────────────────────────────┘
F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu NUM
請告訴我什麼是錯的... – aer 2011-05-25 03:53:42
這只是看起來像一個[冒泡排序(http://en.wikipedia.org/wiki/Bubble_sort),雖然它沒有做正確的交換。 – chrisaycock 2011-05-25 03:55:06
什麼問題? – bdares 2011-05-25 03:57:08