宿題で、クイックソートのコードを書きました。クイックソートとは、要素の列からある基準値を設け、それより大きいグループと小さいグループに分割し、次にそれぞれのグループで同様の操作を繰りかえすことによってソートを行うアルゴリズムです。
{42513}の順に並んだ数字が{12345}の順になれば正解です。
#include <iostream>#define N 5//データ件数int data[N] = { 4,2,5,1,3 };void quicksort(int left, int right) {//クイックソートの実施int i, j, value, tmp;if (left >= right) {return;}value = data[left];i = left + 1;j = right;while (i <= j){while ((i <= j) && (data[i] <= data[left])){i++;}while ((i <= j) && (data[j] > data[left])) {j–;}if(i<j){tmp = data[i];data[i] = data[j];data[j] = tmp;i++;j–;}}tmp = data[left];data[left] = data[j];data[j] = tmp;quicksort(left, j – 1);quicksort(j + 1, right);}int main() {quicksort(0, N – 1);int i;for(i = 0; i < N; i++){printf(“%d”, data[i]);}}
こんなに長いコードは初めて書きました。50行くらいでしょうか。出力は以下の通りです。
12345