**ソーティングのアルゴリズム
#include<stdio.h>
int data[10];
void swap(int *a,int *b){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
-バブルソート
void bubble_sort(){
int i,j;
for(i=0;i<10;i++){
for(j=i;j<10;j++){
if(data[j]>data[j+1])swap(&data[j],&data[j+1]);
}
}
}
-マージソート
#include<stdio.h>
void merge_sort(int low,int high){
int mid;
//十分に短い数字列になった
if( (high-low)<=2 ) {if(data[low]>data[high]) swap(&data[low],&data[high]);
return;}
//分割点
mid=(high+low)/2;
//分割
merge_sort(low,mid); merge_sort(mid+1,high);
}
-クイックソート
void quick_sort(int low,int high){
int i,j,mid;
if(low<high){
i=low+1;
j=high;
mid=(int)(low+high)/2;
while(i<=j){
while(data[mid]>data[i])i++;
while(data[mid]<data[j])j--;
if(i<=j) swap(&data[i++],&data[j--]);
}
quick_sort(low,j);
quick_sort(i,high);
}
}
void print_data(){
int i;
for(i=0;i<10;i++)
printf("%d ",i);
printf("\n");
}
int main(){
data[0]=1;
data[1]=3;
data[2]=2;
data[3]=9;
data[4]=5;
data[5]=0;
data[6]=6;
data[7]=11;
data[8]=2;
data[9]=3;
quick_sort(0,9);
print_data();
}
最終更新:2009年07月08日 00:19