[数据结构] 快速排序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++; } }