バブルソート
以下のために(int型 I = 2 ; iが<= N; iは++ )J在前、I在后 のための(INT J = 1 ; J <= NI; J ++ ) 場合([J] < [i])と スワップ(A [I]、[J])。
2:クイックソート
書式#include <iostreamの> 使用して名前空間はstdを、 INT [(INT)1E5 + 5 ]。 ボイド quick_sort(INT Q []、INT L、INT R)//先排序再递归 { 場合(L> = R)リターン; INT X = Q [L]、I = 1- 1、J = R + 1 。 しばらく(私は< j)を { 行う ++私を。一方、(Q [i]の< X)。 やります j--; 一方、(Q [J]> X)。 あれば(私は< スワップ(Q [I]、Q [J]を)。 j)を } quick_sort(L、j)は、 quick_sort(J + 1 、R)。 } int型のmain() { int型N; cinを >> N; 以下のために(int型 i = 1 ; iが= <N; iは++ ) CIN >> [I]。 quick_sort(1 、N) 以下のために(int型 i = 1 ; iが<= N; iは++ ) COUT << [I] << ' ' 。 リターン 0 ; }
3:マージソート
書式#include <iostreamの> 使用して名前空間はstdを、INT [(INT)1E5 + 5 ]、TMP [(INT)1E5 + 5 ]。 ボイド merge_sort(INT Q []、INT L、INT R) { 場合(L> = R)リターン; INT半ば= L + R >> 1 。 merge_sort(Q、L、MID)、merge_sort(Q、ミッド + 1 、R)。 int型のk = 0、I = 1、J =ミッド+ 1 。 しばらく(I <=ミッド&& jの<= R) の場合 (Q [I] <Q [J])TMP [Kが++] = Q [I ++ ]; 他の TMP [K ++] = Q [J ++ ]; 一方、(Iは<= MID)TMP [K ++] = Q [I ++ ]; 一方(J <= R&LT)TMP [K ++] = Q [J ++ ]; のための(int型 Iは、L、J = = 0を Q [I] =;私は= R&LT <J ++、Iは++)は、TMP [J]を; //エラープローン、TMP配列の範囲は0から開始し、qはLとR&LTである } int型のmain() { int型N-、 CINを >> N-; のための(INT I = 1 ; I <= N; I ++は) CIN >> [ I]; merge_sort(A、1 、N-); のための(int型 i = 1 ; iが++; iが<= N ) COUT << [I] << ' ' 。 リターン 0 ; }