#include <stdio.h>
#include <stdlib.h>
void main();
/*アルゴリズム*/
void QuickSotr(int *data, int n);
/*便利系*/
int MyRandom(int maxInt);
void ArrayPrint(int *array, int n);
void ArrayShuffle(int *array, int n);
void ArrayCreate(int *array, int n);
void Swap(int *array, int *data2);
void main() {
int n = 20;
int A[20];;
ArrayCreate(A,n);
ArrayShuffle(A, n);
ArrayPrint(A, n);
QuickSotr(A, n);
ArrayPrint(A, n);
}
/**
* クイックソートもどき
**/
void QuickSotr(int *array , int n) {
int i;
int right = 0;
int pivot = n - 1; //ケツをPivot化
int location = 0; //中心点
if (n <= 0) {
return;
}
for (i = 0; i < n - 1; i++) {
if (array[i] < array[pivot]) {
if (location != i)
Swap(&array[location], &array[i]);
location = location + 1;
}
}
Swap(&array[pivot],&array[location]);
QuickSotr(array, location);//左翼
QuickSotr(&array[location + 1], n - location - 1 );//右翼
}
/**
* クイックソートもどき
**/
/**
* 便利なメソッド
**/
/* myRandomとswapメソッドを使って配列をランダムに混ぜる。*/
void ArrayShuffle(int *array, int n) {
int i;
for (i = 0; i < n; i = i + 1) {
int work = MyRandom(n);
Swap(&array[i], &array[work]);
}
}
/* 時間を用いた乱数生成マクロ、 [ maxInt ] に10を入れたら 0-9の乱数を生成する。*/
int MyRandom(int maxInt) {
}
void Swap(int *data1, int *data2) {
int work;
work = *data1;
*data1 = *data2;
*data2 = work;
}
void ArrayPrint(int *array, int n) {
int i;
for (i = 0; i < n; i = i + 1)
if (i != n - 1)
else
return;
}
void ArrayCreate(int *array, int n) {
int i;
for (i = 0; i < n; i = i + 1) {
array[i] = i;
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnZvaWQgbWFpbigpOwoKLyrjgqLjg6vjgrTjg6rjgrrjg6AqLwp2b2lkIFF1aWNrU290cihpbnQgKmRhdGEsIGludCBuKTsKCi8q5L6/5Yip57O7Ki8KaW50IE15UmFuZG9tKGludCBtYXhJbnQpOwp2b2lkIEFycmF5UHJpbnQoaW50ICphcnJheSwgaW50IG4pOwp2b2lkIEFycmF5U2h1ZmZsZShpbnQgKmFycmF5LCBpbnQgbik7CnZvaWQgQXJyYXlDcmVhdGUoaW50ICphcnJheSwgaW50IG4pOwp2b2lkIFN3YXAoaW50ICphcnJheSwgaW50ICpkYXRhMik7Cgp2b2lkIG1haW4oKSB7CglwcmludGYoIuOCr+OCpOODg+OCr+OCveODvOODiO+8n1xuIik7CgkKCWludCBuID0gMjA7CglpbnQgQVsyMF07OwoKCglwcmludGYoIuOCr+OCpOODg+OCr+OCveODvOODiOOCguOBqeOBjeODhuOCueODiFxuIik7CglBcnJheUNyZWF0ZShBLG4pOwoJQXJyYXlTaHVmZmxlKEEsIG4pOwoJQXJyYXlQcmludChBLCBuKTsKCglRdWlja1NvdHIoQSwgbik7CgoJcHJpbnRmKCLjgr3jg7zjg4jlrozkuoZcbiIpOwoJQXJyYXlQcmludChBLCBuKTsKCn0KCi8qKgoqCeOCr+OCpOODg+OCr+OCveODvOODiOOCguOBqeOBjQoqKi8Kdm9pZCBRdWlja1NvdHIoaW50ICphcnJheSAsIGludCBuKSB7CgoJaW50IGk7CglpbnQgcmlnaHQgPSAwOwoJaW50IHBpdm90ID0gbiAtIDE7CS8v44Kx44OE44KS77yw772J772W772P772U5YyWCglpbnQgbG9jYXRpb24gPSAwOwkvL+S4reW/g+eCuQoKCWlmIChuIDw9IDApIHsKCQlyZXR1cm47Cgl9CgoJZm9yIChpID0gMDsgaSA8IG4gLSAxOyBpKyspIHsKCQlpZiAoYXJyYXlbaV0gPCBhcnJheVtwaXZvdF0pIHsKCQkJaWYgKGxvY2F0aW9uICE9IGkpCgkJCQlTd2FwKCZhcnJheVtsb2NhdGlvbl0sICZhcnJheVtpXSk7CgkJCWxvY2F0aW9uID0gbG9jYXRpb24gKyAxOwoJCX0KCX0KCglTd2FwKCZhcnJheVtwaXZvdF0sJmFycmF5W2xvY2F0aW9uXSk7CgoJUXVpY2tTb3RyKGFycmF5LCBsb2NhdGlvbik7Ly/lt6bnv7wKCVF1aWNrU290cigmYXJyYXlbbG9jYXRpb24gKyAxXSwgbiAtIGxvY2F0aW9uIC0gMSApOy8v5Y+z57+8Cn0KLyoqCioJ44Kv44Kk44OD44Kv44K944O844OI44KC44Gp44GNCioqLwoKCi8qKgoqCeS+v+WIqeOBquODoeOCveODg+ODiQoqKi8KCi8qIG15UmFuZG9t44Goc3dhcOODoeOCveODg+ODieOCkuS9v+OBo+OBpumFjeWIl+OCkuODqeODs+ODgOODoOOBq+a3t+OBnOOCi+OAgiovCnZvaWQgQXJyYXlTaHVmZmxlKGludCAqYXJyYXksIGludCBuKSB7CglpbnQgaTsKCWZvciAoaSA9IDA7IGkgPCBuOyBpID0gaSArIDEpIHsKCQlpbnQgd29yayA9IE15UmFuZG9tKG4pOwoJCVN3YXAoJmFycmF5W2ldLCAmYXJyYXlbd29ya10pOwoJfQp9CgovKiDmmYLplpPjgpLnlKjjgYTjgZ/kubHmlbDnlJ/miJDjg57jgq/jg63jgIEgWyBtYXhJbnQgXSDjgasxMOOCkuWFpeOCjOOBn+OCiSAwLTnjga7kubHmlbDjgpLnlJ/miJDjgZnjgovjgIIqLwppbnQgTXlSYW5kb20oaW50IG1heEludCkgewoJc3JhbmQodGltZShOVUxMKSk7CglyZXR1cm4gcmFuZCgpICUgbWF4SW50Owp9Cgp2b2lkIFN3YXAoaW50ICpkYXRhMSwgaW50ICpkYXRhMikgewoJaW50IHdvcms7Cgl3b3JrID0gKmRhdGExOwoJKmRhdGExID0gKmRhdGEyOwoJKmRhdGEyID0gd29yazsJCn0KCnZvaWQgQXJyYXlQcmludChpbnQgKmFycmF5LCBpbnQgbikgewoJaW50IGk7CglwcmludGYoInsgIik7Cglmb3IgKGkgPSAwOyBpIDwgbjsgaSA9IGkgKyAxKQoJCWlmIChpICE9IG4gLSAxKQoJCQlwcmludGYoIiVkICwgIiwgYXJyYXlbaV0pOwoJCWVsc2UKCQkJcHJpbnRmKCIlZCAiLCBhcnJheVtpXSk7CglwcmludGYoIiB9Iik7CglwcmludGYoIlxuIik7CglyZXR1cm47Cn0Kdm9pZCBBcnJheUNyZWF0ZShpbnQgKmFycmF5LCBpbnQgbikgewoJaW50IGk7Cglmb3IgKGkgPSAwOyBpIDwgbjsgaSA9IGkgKyAxKSB7CgkJYXJyYXlbaV0gPSBpOwoJfQp9Cgo=
クイックソート?
クイックソートもどきテスト
{ 3 , 0 , 1 , 19 , 2 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 }
ソート完了
{ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 , 17 , 18 , 19 }