本帖最后由 pasuka 于 2018-1-8 10:38 编辑
建议调用C或C++标准里面提供的排序方法,稳定性与可靠性有保证,效率不一定最优譬如C可以选择
http://en.cppreference.com/w/c/algorithm/qsort
[C] 纯文本查看 复制代码 #include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int compare_ints(const void* a, const void* b)
{
int arg1 = *(const int*)a;
int arg2 = *(const int*)b;
if (arg1 < arg2) return -1;
if (arg1 > arg2) return 1;
return 0;
// return (arg1 > arg2) - (arg1 < arg2); // possible shortcut
// return arg1 - arg2; // erroneous shortcut (fails if INT_MIN is present)
}
int main(void)
{
int ints[] = { -2, 99, 0, -743, 2, INT_MIN, 4 };
int size = sizeof ints / sizeof *ints;
qsort(ints, size, sizeof(int), compare_ints);
for (int i = 0; i < size; i++) {
printf("%d ", ints[i]);
}
printf("\n");
}
C++对应的是
http://en.cppreference.com/w/cpp/algorithm/sort
|