From dfe16c775641d4df870a2576c1e9bd0fcb072436 Mon Sep 17 00:00:00 2001 From: kemasama Date: Tue, 26 Apr 2022 18:39:33 +0900 Subject: [PATCH] fix: quick sort --- README.md | 3 +- quick_sort/{qsort => quick_sort} | Bin 33714 -> 33671 bytes quick_sort/quick_sort.c | 97 +++++++++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 1 deletion(-) rename quick_sort/{qsort => quick_sort} (94%) create mode 100644 quick_sort/quick_sort.c diff --git a/README.md b/README.md index 52fe334..5a19471 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,8 @@ 数値配列のクイックソートを行う -2022/04/22 +2022/04/22 q_sort +2022/04/26 quick_sort #### 処理内容 diff --git a/quick_sort/qsort b/quick_sort/quick_sort similarity index 94% rename from quick_sort/qsort rename to quick_sort/quick_sort index a2b74ff5032962f49e10b607ecec1f508be3ac87..115e6ad5985e86a133dc1822e6316ce5bc592137 100755 GIT binary patch delta 1039 zcmZ`%Z%9*76hCio=H`T%x@K8U7)XAJ%1ooF&kVE3idG;+4Vy2fVx~@1q_!!vQVPZk zHW14Nr9*_!FB_yK%YwiUeyKi%+P}Ainq;A&taJ7@SV9+m_nzOmzw_^M$DJ~#Q}$HB zGEPCs78F(ifDDm^5bXd8Ja0PyEO@FAXAp@?jzliBusX&fxY)8Zk8!fUNL_s3*|CnV z_ud}23iE6+6Bf41Pv_0srF8iil7^u4w00qghp~*CnQ+OSMS{j~)W$M%8{MpLBM7b` zR=4U6=J*%0AutlW>I z)z8NDR3Hgjs2S2z@_23^+TSoPzpKGd164Cp6R5F8MW9snM*~pApgkIixYe-^|CeMs zUO1sqYLf608yLc(UV0^LOooj;!JOnH&fs8+_;TKeCgOgMPf9^UL6d)@yTTV?8R17s zIdf3hSE|?S1-QSU<^uC7ZcWrnscua0rH78#qBgASw=8(kdkiQKq}U);p$gKt43BgjsQbHVG#QAH;(MQ0M`9F>MY zA5vdnem9EZ6*JL?Q!u?C!+2SAA~W9CAZRH89N}CUqzW#1ULhCt;l?C9)Xdc{h0|3% z>{43AU5@X2-1sX0wXt+2XU9}~Xm((3P#Evwa?7T!xKqZI1MijxPc?jB59^jRpH>#C z4aUQI{^tH!qmbTf&%KrM$oX@s`Q$M7>+=Qc**jyE!nm#?J0|-csy%-JN7gQg delta 1083 zcmZ`&Ur1A76hHTF(~SvpxkMk*g<$y*86o}K=F&SA`&CF-WLW~=tcU_pq? zYczUDeX*$pqA$AyC0O`k#C(XJLVa;oRG{QCbe(fIml+-Q`@ZjYc7ESE-?`uC^ReST zc1$T_#s!t^U{MVKu!t-~)D57*Ip_hf;;cqgBDR_Wi9)c+a+&*rUsjynaA#HUpD#Qx z)Lz`JEVRxGbF#zCijXZooB!Pnpv3S3L^^`DC)U}Ap^uY22c+ z(-IoS^`}&~SkQSrq-0c0qZ_g6q)sjAY_z8+Sk+H5l+s8kQ6 zHR>2#zlg;iC6jH@HLb;qkYX_(>Rf*bpQCUNldL;ShGSFUpOkU$asF?ImZ&>a5F0OO z08c%Lom)Wv2=d=T*xzvZzg!tkrJ1JYi{It2VdV|=eb6{?ke8~N84}KS;5r6+c~S{Mynl4ZCrb6 zn;puV>ntsBnr@v80uCHL&=9?a!-^BVWC4eHfV~~Rn;M3$3jj6}G7%bF)EMG?H*xxO zE5^8EPa?pP;8?LF$Vv!`kYhOh;#Rhe*KXriwsCp@sR+8+v`(Q}atIzz&W=CF<)mYB zHetkb>LdomZS7;)BxdhLwpoG>eb@} zZ(094X0LWMV6A>xed+0p?&7qt=ymJM$Ih6JwM0VB3&x(#p0eeXU_e}a_GHG;H~VU~ HA{_n=_%=Wq diff --git a/quick_sort/quick_sort.c b/quick_sort/quick_sort.c new file mode 100644 index 0000000..b3fa1ab --- /dev/null +++ b/quick_sort/quick_sort.c @@ -0,0 +1,97 @@ +#include + +int +swap( +int *x, +int *y +) +{ + int temp; + + temp = *x; + *x = *y; + *y = temp; + + return 0; +} + +/************************************************************************* + クイックソートを行う +*************************************************************************/ +int +quick_sort( +int *array, // ソートする配列 +int left, // 左端 +int right // 右端(※配列の要素数ではない) +) +{ + int smaller_index; + int larger_index; + int pivot_index; + int pivot; + + if ( left >= right ) { + return -1; + } + + smaller_index = left; + larger_index = right; + pivot_index = left; + pivot = array[left]; + + while ( smaller_index < larger_index ) { + while ( array[smaller_index] < pivot ) + { + smaller_index++; + } + + while ( array[larger_index] > pivot ) + { + larger_index--; + } + + if ( array[smaller_index] > array[larger_index] ) { + swap(&array[smaller_index], &array[larger_index]); + } else if ( array[smaller_index] == array[larger_index] ) { + smaller_index++; + } + } + + quick_sort(array, left, larger_index - 1); + quick_sort(array, larger_index + 1, right); + + return 0; +} + +/*********************************** +メイン関数 +***********************************/ +int +main() +{ + int array[] = { + 10, 20, 30, 50, + 50, 10, 45, 65, + 76, 54, 56, 15, + 34, 31, 14, 17, + 14, 15, 11, 16, + 90, 19, 98, 76, + 75, 15, 161, 165, + 166, 167, 87, 86 + }; + + int length = sizeof(array) / sizeof(int); + + printf("Length: %d\n", length); + quick_sort(array, 0, length - 1); + + int i ; + + for ( i = 0 ; i < length ; i++ ) + { + printf("%d", array[i]); + printf("\n"); + } + + return 0; +}