ソーティング

**ソーティングのアルゴリズム
 
 
 
#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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。