c
1#include <stdio.h> 2#include <string.h> 3void jisho(char *a[],int left,int right){ 4 int i,j; 5 if(left + 1>right) return; 6 char*pivot = a[left+1]; 7 i=left; 8 j=right; 9 while(1){ 10 while(strcmp(a[i],pivot)) ++i; 11 while(strcmp(a[j],pivot)) --j; 12 if(i<j){ 13 char *t=a[i]; 14 a[i]=a[j]; 15 a[j]=t; 16 ++i; 17 --j; 18 }else if(j<=i){ 19 break; 20 } 21 } 22 if(j+1<right) jisho(a,j+1,right); 23 if(left<i-1) jisho(a,left,i-1); 24} 25int main(void) 26{ 27 char *firstName[] = { 28 "lucy","ethel","irene","dylan","jesse","ellen","randy", 29 }; 30 int i; 31 jisho(firstName, 0, 6); 32 for (i = 0; i < 7; ++i) { 33 printf("%s, ", firstName[i]); 34 } 35 printf("\n"); 36 return 0; 37} 38
文字列を辞書順にソートするプログラムを書きたいと思っています。数字のソートはできたのでそれをベースに文字列でのソートを仕方を調べながら書いてみたのですが実行しても順番が入れ替わっていませんでした。エラーなども発生していません。入れ替わらない理由と改善点を教えていただきたいです。
回答2件
あなたの回答
tips
プレビュー