C/C++の宿題を片付け ..
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
160:デフォルトの名無しさん 07/09/24 10:09:03 >>158 続き。関係ないところは行をつめている。 !! つきのコメントのあるところが主な修正箇所。 int quick_sort(const char *array[], int left ,int right,char *sort_array[]) { int last = 0; int cnt = 0; int pivot = 0; if(array == NULL || left < 0 || right < 0 || sort_array == NULL) return 0; //引数チェック if(left >= right) return 1; //配列の要素が一つの場合 if(sort_array[0] == NULL){ //sort_array[0]がNULLならarrayをコピー for(cnt = 0;cnt <= right;cnt++){ sort_array[cnt] = (char *)malloc(256); // !!malloc で適当に確保してからコピーする strcpy(sort_array[cnt],array[cnt]); } } pivot = (right+left)/2; //基準値を決める change(sort_array, pivot, right); // !!pivot を最後に送りつける pivot = right; last = left; for(cnt = left; cnt <= right;cnt++){ // !![left,last) は pivot 以下 if(sort_array[cnt][0] <= sort_array[pivot][0]){ // !!pivotが左側に入るために等号付き change(sort_array,cnt,last++); !! last++ と後置インクリメント } } quick_sort(array,left,last-2,sort_array); // !!array[last-1] が pivot なので抜く quick_sort(array,last,right,sort_array); return 1; }
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5289日前に更新/230 KB
担当:undef