[数据结构] 快速排序C语言程序

//由大到小
//
快速排序(待排序数组,左侧起点,右侧起点) void quickSort(int *array, int l, int r) { if ( l >= r) return; int i = l,j = r; int temp; while (i != j) { for ( ;j>i;j--) { if (array[j] > array[i]) { temp = array[j]; array[j] = array[i]; array[i] = temp; break; } } for ( ; i<j;i++) { if (array[j] > array[i]) { temp = array[j]; array[j] = array[i]; array[i] = temp; break; } } } quickSort(array, l, i-1); quickSort(array, j+1, r); }

 

//成绩排名处理,(同分数同名次,后面的人顺延,99 99 95 60,排名为 1 1 3 4)
// 输入参数:成绩数组;以分数为下标来记录该分数的排名的预存数组
void dealRanks(int * grade, int *ranks)
{
    quickSort(grade, 0, N-1);
    for (int i = 0 ; i <101; i++)
    {
        ranks[i] = 0;
    }
    int rank=1,temp = -1;
    for (int i = 0 ; i < N ; i++)
    {
        if (temp != grade[i])
        {
            ranks[grade[i]] = rank;
            temp = grade[i];
        }
        rank++;
    }
}

 

posted @ 2018-02-26 09:26  Oran  阅读(1054)  评论(0编辑  收藏  举报