java 数组冒泡排序、转置(降序)
1.java 数组冒泡排序
排序的基本原理(升序):
- 原始数据: 2 、1 、9 、0 、5 、3 、7 、6 、8;
- 第一次排序: 1 、2 、0 、5 、3 、7 、6 、8 、9 ;
- 第二次排序: 1 、0 、2 、3 、5 、6 、7 、8 、9 ;
- 第三次排序 : 1 、 2 、3 、4 、5 、6 、7 、8 、9 ;
以上是基础的原理过程,但是有一个问题,数据的不同可能排序的次数出现不同,但是有多少个数据,总的排序次数不会超过数组的长度。只要排序的次数达到长度*长度的次数,那么所有的数据就可以排序成功。
进行冒泡排序:
public class 数组的排序 {public static void main(String[] args) {int data[] = new int[]{2,1,9,0,5,3,7,6,8};get(data);//外层控制排序的总次数for (int y = 0 ; y < data.length ; y++){//内层控制每次的排序控制for (int x = 0 ; x <data.length-1 ; x++) {if (data[x] > data[x+1]){int t = data[x];data[x] = data[x+1];data[x+1] = t;}}}get(data);}//输出数据的方法public static void get(int temp[] ){for (int i = 0 ; i < temp.length ; i++) {System.out.print(temp[i]+ "、");}System.out.println();} }
改善设计:主方法设计上是作为程序的起点,既然是起点,所有的代码编写一定尽量简单,那么我们可以单独定义方法进行复杂操作。
1 public class 数组的排序 { 2 public static void main(String[] args) { 3 int data[] = new int[]{2,1,9,0,5,3,7,6,8}; 4 get(data); 5 sort(data); 6 get(data); 7 } 8 //输出数据的方法 9 public static void get(int temp[] ){ 10 for (int i = 0 ; i < temp.length ; i++) { 11 System.out.print(temp[i]+ "、"); 12 } 13 System.out.println(); 14 }15 //负责排序的方法 16 public static void sort(int s[]){ 17 //外层控制排序的总次数 18 for (int y = 0 ; y < s.length ; y++){ 19 //内层控制每次的排序控制 20 for (int x = 0 ; x <s.length-1 ; x++) { 21 if (s[x] > s[x+1]){ 22 int t = s[x]; 23 s[x] = s[x+1]; 24 s[x+1] = t; 25 } 26 } 27 } 28 } 29 }
2.数组转置
- 原始数据 : 1 、 2 、3 、4 、5 、6 、7 、8 ;
- 转置后数据 : 8 、 7 、6 、5 、4 、3 、2 、1 ;
要实现转置的操作有两个思路:
定义一个新的数组,而后将原始数组按照排序的方式插入到新的数组之中,随后改变原始数组的引用;
1 public class 数组的排序 { 2 public static void main(String[] args) { 3 int data[] = new int[]{1,2,3,4,5,6,7,8}; 4 //首先定义一个新的数组,长度与原始数组一致 5 int temp[] = new int[data.length]; 6 int foot = data.length -1 ; 7 //对于新的数组按照索引由小到大的顺序循环 8 for (int i = 0 ; i < temp.length ; i++) { 9 temp[i] = data[foot]; 10 foot--; 11 } 12 data = temp; //data转向temp ,而data的原始数据就成为了垃圾 13 get(data); 14 15 } 16 //输出数据的方法 17 public static void get(int temp[] ){ 18 for (int i = 0 ; i < temp.length ; i++) { 19 System.out.print(temp[i]+ "、"); 20 } 21 System.out.println(); 22 } 23 }
虽然上面的算法实现了转置的操作,但是代码里会产生垃圾 data的原始数据就是垃圾。
- 利用算法,再一个数组上直接完成转置操作
- 原始数据: 1 、 2 、3 、4 、5 、6 、7 、8 ; //转换次数:数组长度 ÷ 2 记住不管数组是技术还是偶数转置次数一样
- 第一次转置: 8 、 2 、3 、4 、5 、6 、7 、1 ;
- 第二次转置 : 8 、 7 、3 、4 、5 、6 、2 、1 ;
- 第三次转置: 8 、 7 、6 、4 、5 、3 、2 、1 ;
- 第四次转置 : 8 、 7 、6 、5 、4 、3 、2 、1 ;
转置:
1 public class 数组的转置 { 2 public static void main(String[] args) { 3 int data[] = new int[]{1,2,3,4,5,6,7,8,9}; 4 reverse(data); 5 get(data); 6 } 7 //负责转置操作 8 public static void reverse(int arr[]){ 9 int start = 0; 10 int end = arr.length -1; 11 for (int i = 0; i < arr.length/2 ; i++) { 12 int temp = arr[start]; 13 arr[start] = arr[end]; 14 arr[end] = temp; 15 start ++; 16 end --; 17 } 18 } 19 //此方法负责输出 20 public static void get(int temp[]){ 21 for(int i = 0 ; i < temp.length ; i++) { 22 System.out.print(temp [i]+"、"); 23 } 24 System.out.println(); 25 } 26 }
转载于:https://www.cnblogs.com/Tsukasa/p/7090900.html
java 数组冒泡排序、转置(降序)相关推荐
- Java中sort实现降序排序
Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...
- Java map按照值降序排列
1)Java map按照值降序排列 思路是转成 list,然后再写入能保证顺序的 LinkedHashMap,普通的 HashMap和 TreeMap等不能保证顺序. /*** 降序排列 map*/p ...
- java comparator 降序排序_【转】java comparator 升序、降序、倒序从源码角度理解
原文链接:https://blog.csdn.net/u013066244/article/details/78997869 环境 jdk:1.7+ 前言 之前我写过关于comparator的理解,但 ...
- [转载] java排序compareTo:降序输出学生成绩
参考链接: Java程序的输出| 18(重写Override) 一道简单程序题: 编写一个程序,输入学生的姓名.分数信息,要求程序按照成绩降序排序后并输出. 实现方法有很多 方法一 public cl ...
- java数组冒泡排序法编程_java实现数组冒泡排序的方法
java实现数组冒泡排序的方法 发布时间:2020-06-24 09:21:42 来源:亿速云 阅读:82 作者:Leah 本篇文章展示了java实现数组冒泡排序的具体操作,代码简明扼要容易理解,绝对 ...
- JavaScript数组升序和降序方法
sort() 方法用于对数组的元素进行排序. arrayObject.sort(sortby) sortby:可选.规定排序顺序.必须是函数 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进 ...
- java升序排列数组_java数组的升序降序排列
展开全部 先来说你的问题,,你要实现写入文件是排序的结果,,那么你就应该先排序再写到文件,,而不是32313133353236313431303231363533e59b9ee7ad943133333 ...
- java数组:排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。`
有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置` public ...
- java数组冒泡排序
冒泡排序(Bubble Sort)是常用的数组排序算法之一 冒泡排序 提示:冒泡排序的基本思想是:对比相邻的元素值,如果满足条件就交换元素值,把较小的元素值移动到数组前面,把大的元素值移动到数组后面( ...
最新文章
- 福布斯:14位技术专家预测,未来哪些行业将被AI颠覆?
- linux set include path,set_include_path()的用法
- mbedtls移植体验
- 移动硬盘拷贝linux文件,Linux下使用移动硬盘拷贝数据
- String ua = request.getHeader(user-agent)---ua值为null
- PHP 函数 - 返回值
- 新商业蓝皮书2021
- PAT1036.跟奥巴马一起编程
- markdown中快速插入Emoji表情包语法速查表!!!
- java 登陆拦截器_java 登录拦截器
- android串口wifi模块,一文深度了解串口WiFi模块的应用场景
- 130个资源网站,总有一个你用得着
- 牛客网暑期ACM多校训练营(第三场) J.Distance to Work 计算几何
- 听李天飞《大话西游》有感
- AI小程序开放2个超级入口,还能分享朋友圈
- 计算机主板电路总线类型没有,电脑主板总线是什么意思
- Word标题编号变黑框
- Altium Designer原理图转OrCAD原理图方法
- 教你如何用好MindMapper
- 【android】向模拟器的sdcard中添加文件
热门文章
- ubuntu20 编译dpdk错误 -Werror=address-of-packed-member
- php字符串怎么传到html_php字符串函数(四):html与字符串之间的转换
- 字符串不替代_TI-Nspire 系列的字符串操作
- spring中的IOC和AOP
- 【Spark】Spark基础教程知识点
- Linux中xml导入数据库,XML数据库 BaseX
- mysql导入表结构命令是_mysql,命令导入\导出表结构或数据
- 全面了解HTTP和HTTPS(开发人员必备)
- 数据库---练习题(45道)
- Scott 32 岁前端年终总结,探寻另一种可能