
#include <stdio.h>
void q_sort(int*ar,int start,int end){
if(start>=end) return;
int bibot=ar[start+(end-start)/2];
int i=start;
int j=end;
while(i<j){
if(ar[i]<bibot) i++;
if(ar[j]>bibot){
j--;
}else if(!(ar[i]<bibot)){
int pos=ar[j];
ar[j]=ar[i];
ar[i]=pos;
}
}
q_sort(ar,start,i);
q_sort(ar,j+1,end);
}
int main(){
int ar[]={3,0,6,8,4,9,1,5,7,2};
int ar_size=sizeof(ar)/sizeof(int)-1;
q_sort(ar,0,ar_size);
for(int i=0;i<=ar_size;i++){
printf("%d ",ar[i]);
}
printf("\n");
return 0;
}
|
0 1 2 3 4 5 6 7 8 9 |
#include <stdio.h>
#include <stdlib.h>
int compar(const void *a, const void *b)
{
//小さい、等しい、大きいのそれぞれに応じて、
//マイナス値、ゼロ、プラス値 を返す必要がある
//昇順 return *(int *)a - *(int *)b;
//降順 return -(*(int *)a) + *(int *)b;
return *(int *)a - *(int *)b;
}
int main(){
int ar[]={3,0,6,8,4,9,1,5,7,2};
int ar_size=sizeof(ar)/sizeof(ar[0]);
qsort(ar, ar_size, sizeof(ar[0]),compar);
for(int i=0;i<ar_size;i++){
printf("%d ",ar[i]);
}
printf("\n");
return 0;
}
|
0 1 2 3 4 5 6 7 8 9 |
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compar(const void *a, const void *b)
{
return strcmp(*(const char**)a,*(const char**)b);
}
int main(){
char*ar[]={"abc","aaaa","aaa","aa","a","ab","b","bb","bbb","bbbb"};
int ar_size=sizeof(ar)/sizeof(ar[0]);
qsort(ar, ar_size, sizeof(ar[0]),compar);
for(int i=0;i<ar_size;i++){
printf("%s ",ar[i]);
}
printf("\n");
return 0;
}
|
a aa aaa aaaa ab abc b bb bbb bbbb |
#include <stdio.h>
#include <stdlib.h>
struct cell{
int i;
char str[20];
};
int compar(const void *a, const void *b)
{
return (*(const cell*)a).i-(*(const cell*)b).i;
}
int main(){
cell ar[]={
4,"4です",
3,"3です",
2,"2です",
1,"1です",
0,"0です",
9,"9です",
8,"8です",
7,"7です",
6,"6です",
5,"5です"};
int ar_size=sizeof(ar)/sizeof(ar[0]);
qsort(ar, ar_size, sizeof(ar[0]),compar);
for(int i=0;i<ar_size;i++){
printf("%d %s\n",ar[i].i,ar[i].str );
}
printf("\n");
return 0;
}
|
0 0です 1 1です 2 2です 3 3です 4 4です 5 5です 6 6です 7 7です 8 8です 9 9です |