c语言实现特殊排序
2018-01-23 21:53
134 查看
题目描述
输入
输出
样例输入
样例输出
代码
总结
输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。
输入
输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。 接下来的一行有N个整数。
输出
可能有多组测试数据,对于每组数据, 第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。 第二行将排序的结果输出。
样例输入
4 1 3 4 2
样例输出
4 1 2 3
代码
#include <stdio.h> void QuickSort(int * a,int low,int high){ if(low >= high) return; int first = low; int last = high; int key = a[low]; while(first < last){ if(first < last && a[last] >= key) last --; a[first] = a[last]; if(first < last && a[first] <= key) first ++; a[last] = a[first]; } a[first] = key; QuickSort(a, low, first - 1); QuickSort(a, first + 1, high); } int main(int argc, const char * argv[]) { int n; while(scanf("%d", &n) != EOF){ int a ; for(int i = 0;i < n;i ++) scanf("%d", &a[i]); int max = a[0]; int maxIndex = 0; for(int i = 0;i < n;i ++){ if(a[i] > a[maxIndex]){ max = a[i]; maxIndex = i; } } for(int i = maxIndex;i < n;i ++) a[i] = a[i + 1]; QuickSort(a, 0, n - 2); printf("%d\n",max); if(n == 1) printf("-1"); else { for(int i = 0;i < n - 2;i ++) printf("%d ", a[i]); printf("%d",a[n - 2]); } printf("\n"); } return 0; }
总结
输入比较多,用快速排序比较好 严格注意输出格式
相关文章推荐
- 快速排序的Java语言与C语言实现
- 基数排序-C语言实现
- 堆排序(Heap Sort)的C语言实现
- 快速排序的C语言代码实现
- C语言实现4种常用排序
- 排序(4)---------希尔(shell)排序(C语言实现)
- C语言实现直接插入排序
- C语言选择排序详解及其实现
- C语言8种排序算法及其实现 1.希尔排序 2.二分插入法 3.直接插入法 4.带哨兵的直接排序法 5.冒泡排序 6.选择排序 7.快速排序 8.堆排序
- 排序(1)---------选择排序(C语言实现)
- C语言实现八种基本排序(四)
- 【算法总结系列-1】快速排序-c语言实现
- 直接插入排序(C语言实现)
- [算法练习]选择排序的C语言实现
- 直接插入排序法(C语言实现)
- 【笔试面试知识点查缺补漏深入理解之C与C++篇】排序的C语言实现-插入-选择-快排
- 排序小结(1)-冒泡,快排(c语言实现)
- 快速排序的C语言实现【严蔚敏--数据结构】
- 排序【8】之基数排序的C语言实现
- 用纯C语言实现快速排序,分递归调用法和非递归调用法。