华为机试-输入整型数组和排序标识,对其元素按照升序或降序进行排序(HJ101)
输入整型数组和排序标识,对其元素按照升序或降序进行排序
http://www.nowcoder.com/questionTerminal/dd0c6b26c9e541f5b935047ff4156309
纯C
快排
#include <stdlib.h> #include <stdio.h> void quick_sort(int *arr, int low, int high) { int temp; int i=low, j=high; if(low < high) { temp = arr[low]; while(i != j) { while(j>i && arr[j] > temp) --j; if(i < j) { arr[i] = arr[j]; i++; } while(j>i && arr[i] < temp) ++i; if(i < j) { arr[j] = arr[i]; j--; } } arr[i] = temp; quick_sort(arr, low, i-1); quick_sort(arr, i+1, high); } } int main() { int n, arr[1000]={0}; while(scanf("%d", &n) != EOF) { //读取 for(int i=0; i<n; i++) { scanf("%d", &arr[i]); } //快排 quick_sort(arr, 0, n-1); int flag; scanf("%d", &flag); //正序输出 if(!flag) { for(int i=0; i<n; i++) printf("%d ", arr[i]); } //倒叙输出 else { for(int i=n-1; i>=0; i--) printf("%d ", arr[i]); } printf("\n"); } return 0; }