[問題] 結構陣列的排序

看板C_and_CPP (C/C++)作者 (脆歐德)時間15年前 (2011/04/03 14:57), 編輯推噓1(108)
留言9則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 使用快速排序結構陣列裡的資料 餵入的資料(Input): kevin 45 46 mary 26 55 jay 48 89 預期的正確結果(Expected Output): jay 48 89 kevin 45 46 mary 26 55 按照字母排序 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) #include <stdio.h> #include <stdlib.h> typedef struct student { char name[5]; unsigned int syntax_ptr; unsigned char count; }STUDENT; STUDENT inst[3]= { "kevin",45,46, "mary",26,55, "jay",48,89 }; /* 函數: 快速排序法的遞迴函數 */ void q_sort(STUDENT *data, int begin, int end) { char partition; char temp; int left, right, k; if ( begin < end ) { left = begin; right = end + 1; partition = data[left]; do { do { left++; } while( data[left] < partition ); do { right--; } while( data[right] > partition ); if ( left < right ) { temp = data[left]; data[left] = data[right]; data[right] = temp; } } while( left < right ); temp = data[begin]; data[begin] = data[right]; data[right] = temp; q_sort(data, begin,right-1); q_sort(data, right+1, end); } } /* 函數: 快速排序法 */ void quickSort(char *data, int count) { q_sort(data, 0, count-1); } /*主程式 */ int main() { quickSort(inst, 3); /* 執行快速排序法 */ system("PAUSE"); return 0; } 補充說明(Supplement): 我的問題是怎麼讓結構陣列在排序中運算,程式跑出錯誤的訊息是資料型態錯誤 我也不知道要怎麼解決,要照字母大小排序,有人可以給點提示嗎? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.26.158.110

04/03 15:01, , 1F
我不知道 char name[5] 這會不會造成問題?
04/03 15:01, 1F

04/03 15:02, , 2F
會 XD
04/03 15:02, 2F

04/03 15:03, , 3F
原po把data的index與data混在一起 先解決這個吧
04/03 15:03, 3F

04/03 15:12, , 4F
這排序是網路上抓的 但套到結構陣列裡就不能用了 我也
04/03 15:12, 4F

04/03 15:12, , 5F
不知道哪裡出問題 囧">
04/03 15:12, 5F

04/03 15:14, , 6F
看清楚錯誤訊息,然後一行一行修改吧
04/03 15:14, 6F

04/03 15:14, , 7F
重要的是你要知道這個排序的原理,不然你沒辦法改
04/03 15:14, 7F

04/03 16:06, , 8F
hint:strcmp
04/03 16:06, 8F

04/03 16:44, , 9F
感謝TsinTa寄信幫忙~
04/03 16:44, 9F
文章代碼(AID): #1Dc1f5CQ (C_and_CPP)
文章代碼(AID): #1Dc1f5CQ (C_and_CPP)