| 本帖最后由 pasuka 于 2018-1-8 10:38 编辑 
 建议调用C或C++标准里面提供的排序方法,稳定性与可靠性有保证,效率不一定最优譬如C可以选择
 http://en.cppreference.com/w/c/algorithm/qsort
 
 [C] syntaxhighlighter_viewsource syntaxhighlighter_copycode #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
 
 |