整列(2)
バブルソート
code:bubblesort.c
void bubblesort(int n, int a[])
{
int i, j, t, flag;
flag = 1;
while (flag) {
flag = 0;
for (i = 0; i < n - 1; i++) {
flag = 1;
}
}
}
}
フラグの使い方の説明も兼ねてこのようにしてた。ほとんど整列している場合に効果的。練習問題:2重の for ループにしてみよう。
挿入ソート
code:insertsort.c
void insertsort(int n, int a[]) /* a0..n-1 を昇順に */ {
int i, j, t;
for (i = 1; i < n; i++) {
for (j = i - 1; j >= 0 && aj > t; j--) { }
}
}
クイックソート
code:quicksort.c
void quicksort(int a[], int first, int last)
{
int i, j, x, t;
i = first;
j = last;
for ( ; ; ) {
if (i >= j) break;
i++; j--;
}
if (first < i - 1) quicksort(a, first, i - 1);
if (j + 1 < last) quicksort(a, j + 1, last);
}