C/C++の宿題を片付けます 96代目at TECHC/C++の宿題を片付けます 96代目 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドの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; } 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch