次はシェルソート
ちょっとややこしや

shellsort(int a[],int N){
int i,j,h,v;
for(h=1;h<=N/9;h=3*h+1);
for(; h>0;h/=3)
for(i=h+1;i<=N;i+=1){
v=a[i];j=i;
while(j>h;&&a[j-h]>v){
a[j]=a[j-h];j-=h)
}
}
}

挿入の拡張版ってとこなのか
増分まで考えたら難しそうだな。
でも速度がはやいようでなかなか使いやすそう。
3つめはバブルソートである。
bubble(int a[],int N){
int i,j,t;
for(i=N;i>=1;i--){
for(j=2;j<=i;j++){
if(a[j-1] > a[j]){
t=a[j-1];a[j-1]=a[j];a[j]=t;
}
}
}
}

なんだかバブルはあんまり効率良くなさそうな気がした。
2つめの整列法でまだわかりやすい。
insertion(int a[], int N){
int i,j,v;
for(i=2;i<=N);i++){
v=a[i];j=i;
while(a[j-1]>v)
{a[j]=a[j-1];j--;}
a[j]=v;
}
}