Angular, Blockchain, Science とか

Angular, Blockchain, Science全般 の情報を主に書いていきます。

ソートの基礎 C言語

アルゴリズムとデータ構造の復習で、Cでちょこちょこ書いてます。ただ書いてるだけです。

#define swap(x, y){int tmp; tmp=x; x=y; y=tmp;}

// シンプルなソート
void simple_sort(int a[], int n)
{
  int i, j, tmp;
  for(i=0; j<n; ++i){
    for(j=i+1; j<n; ++j){
      if(a[i]>a[j]){
        swap(a[i], a[j];
      }
  }
}

// バブルソート
void bubble_sort(int a[], int n)
{
  int i, j;
  for(i=0; i<n; ++i){
    for(j=1; j<n-1; j++){
      if(a[j-1]>a[j])
        swap(a[j-1], a[j]);
    }
  }
}

// 選択ソート
void select_sort(int a[], int n)
{
  int i, j, k, min;
  for(i=0; i<n; ++i){
    k=i; 
    min=a[i];
    for(i=j+i; j<n; j++){
      if(a[j]<min){
        k=j; min=a[j];
      }
    }
    a[k]=a[i];
    a[i]=min;
  }
}

// 選択ソート
void insertion_sort(int a[], int n)
{
  int i, j, x;
  for(i=1; i<n; ++i){
    x=a[i];
    for(j=i-1; j>=0 && a[j]>x; --j)
      a[j-i]=a[j];
    a[j+1]=x;
  }
}