对于序列的排序,可以采用冒泡排序:
原理为相邻两项排序,如果前一项比后一项小则交换位置。
根据实际需要可以选择升序或者降序
#includeint main() { int n = 0; int arr[50] = { 0 }; scanf("%d", &n); //创建序列 for (int i = 0; i < n; i++) scanf("%d", &arr[i]); for (int j = 0; j < n; j++) { for (int k = j + 1; k <= n; k++) {//冒泡排序 if (arr[k] > arr[j]) { int tmp = arr[k]; arr[k] = arr[j]; arr[j] = tmp; } } } //降序排列 for (int i = 0; i < n; i++) printf("%d ", arr[i]); return 0; }
或者可以直接排序法,这种方法会直接去重,若不想要去重,还需另行说明
直接排序法的原理为直接将元素赋值给等大小下标的序列直接排序
#includeint main() { int n = 0; int arr[1001] = { 0 }; int tmp = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &tmp); if (tmp >= 1 && tmp <= 1000) //直接将数据赋值给相应下标位置实现直接排序 arr[tmp] = tmp; } for (int j = 0; j <= 1000; j++) { //未赋值的位置忽略实现只对输入数据的排序 //重复的元素也会一并去除 if (arr[j] != 0) printf("%d ", arr[j]); } return 0; }



