kotonoha_pcg@ぷろこんにっき

ここ(http://kotonoha-pcg.hatenablog.com/)の別館です、競プロの話が殆どです。最近mdモードに変えて一気に使い勝手が変わりました。

Sort

バブルソート

昇順ソートの一種.単純に数が少なければ,こちらの方が速度が速い場合が多い.

int b-sort(int a[],int n){
	int i,j,t;
	for(int i=0;i<n;i++){
		for(int j=n-1;j>i;j--){
			if(a[j-1]>a[j])	t=a[j]; a[j]=a[j-1]; a[j-1]=t;
		}
	}
}

計算量はO(n^2)となる.

選択ソート

 整列されていない部分から最小の要素を取って,それを先頭へ持っていく.これを繰り返すのが選択ソートで,手順は,
for文

  • a[0]~a[n-1]のうちの最小の要素を探して,それをa[0]と交換する.
  • a[1]=a[n~1]のうちの最小の要素を探して,それをa[1]と交換する.

といったことをnを終わるまで繰り返す.

int ssort(int a[],int n){
	int lowest,lowkey;
	for(int i=0;i<n-1;i++){
		lowest=i;
		lowkey=a[i];
		for(j=i+1;j<n;j++)
			if(a[j]<lowkey){
				lowest=j; lowkey=a[j];
			}
		t=a[i]; a[i]=a[lowest]; a[lowest]=t;
	}
}

一応ここまでにして,続きはいつか書きます.