奇数位按升序排序,偶数位按降序排序
2016-09-11 08:52
134 查看
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scan = new Scanner(System.in); while(scan.hasNext()){ String str = scan.nextLine(); sort(str); } scan.close(); } private static void sort(String str){ //去掉空格,保存数字 int str_length = str.length(); StringBuilder sb = new StringBuilder(); for(int i = 0 ; i < str_length ; i++){ if(str.charAt(i) != ' '){ sb.append(str.charAt(i)); } } char[] num = sb.toString().toCharArray(); int length = num.length; int part_length = length / 2;//保存一半数字,按照奇数偶数保存 char[] odd; char[] even; //偶数个数字 if(length % 2 == 0){ odd = new char[part_length]; even = new char[part_length]; }else{ //奇数个数字,多一个奇数 odd = new char[part_length + 1]; even = new char[part_length]; } int index_odd = 0; int index_even = 0; for(int i = 0 ; i < length ; i++){ if(i % 2 == 0){ odd[index_odd++] = num[i]; }else{ even[index_even++] = num[i]; } } ascendingSort(odd);//奇数位升序 descendingSort(even);//偶数位降序 for(int i = 0 ; i < index_even ; i++){ if(i == 0) System.out.print(odd[i] + " " + even[i]); else System.out.print(" " + odd[i] + " " + even[i]); } if(index_odd != index_even){ System.out.println(" " +odd[index_odd - 1]); } } private static void ascendingSort(char[] data){ int length = data.length; char temp = '*'; for(int i = 0 ; i < length - 1 ; i++){ for(int j = i + 1 ; j < length ; j++){ if(data[i] > data[j]){ temp = data[i]; data[i] = data[j]; data[j] = temp; } } } } private static void descendingSort(char[] data){ int length = data.length; char temp = '*'; for(int i = 0 ; i < length - 1 ; i++){ for(int j = i + 1 ; j < length ; j++){ if(data[i] < data[j]){ temp = data[i]; data[i] = data[j]; data[j] = temp; } } } } }
相关文章推荐
- 华为机试题之二:输入一串用空格隔开的数字串,对于数字串的奇数位按升序排序,偶数位按降序排序.
- 传入一个数组进行排列,奇数在前升序,偶数在后降序,在程序执行中不能开辟新数组空间
- 华为:对一个数组,将数组中偶数从大到小排序,奇数从小到大排序,奇数和偶数交叉着放,且输出数组第一位放奇数
- 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。
- linux 中 ll 命令如何让查询结果按时间升序或降序排序?
- C语言,有5名学生保存在结构体数组中,编程按学生的成绩升序排序,按学生的姓名降序排序,按年龄从低到高排序
- 求MySQL先按大于等于当前时间升序排序,再按小于当前时间降序排序
- 对N行N列二维数组的每一行排序,偶数行(0当作偶数)由小到大排序,奇数行由大到小排序
- LINQ中的OrderBy实现多字段升序、降序排序实现
- 排序箭头,升序,降序简单实现
- AngularJs实现 每列排序,输入查找、插入升序降序图标
- 对数组中的自定义的类型根据姓名,年龄排序(升序, 降序)sortedArrayUsingSelector
- 请通过代码实现以下功能:输入一个5X5的二维数组,将数组进行排序,其中一维数组按照平均值降序,一维数组内部升序排列。
- 创建一维数组,长度为20,元素索引值为索引的二倍,奇数为负偶数为正,然后对数组排序
- 单链表的逆置\反转,单链表的排序升序,单链表排序降序
- 华为机试题——数组排序,且奇数存在奇数位置,偶数存在偶数位置
- 特别排序语句(字段首字母升序,字段相同则降序,其余升序)
- SQL-ORDER BY 多字段排序(升序、降序)
- 数组重排序(将所有奇数都放在前面,所有偶数放在后面)的深入分析
- 对数组中的对象进行升序以及降序的排序方法(其中对象类型是系统类型).