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 数组冒泡排序、转置(降序)相关推荐

  1. Java中sort实现降序排序

    Java中sort实现降序排序 利用Collections的reverseOrder方法: import java.util.Arrays; import java.util.Collections; ...

  2. Java map按照值降序排列

    1)Java map按照值降序排列 思路是转成 list,然后再写入能保证顺序的 LinkedHashMap,普通的 HashMap和 TreeMap等不能保证顺序. /*** 降序排列 map*/p ...

  3. java comparator 降序排序_【转】java comparator 升序、降序、倒序从源码角度理解

    原文链接:https://blog.csdn.net/u013066244/article/details/78997869 环境 jdk:1.7+ 前言 之前我写过关于comparator的理解,但 ...

  4. [转载] java排序compareTo:降序输出学生成绩

    参考链接: Java程序的输出| 18(重写Override) 一道简单程序题: 编写一个程序,输入学生的姓名.分数信息,要求程序按照成绩降序排序后并输出. 实现方法有很多 方法一 public cl ...

  5. java数组冒泡排序法编程_java实现数组冒泡排序的方法

    java实现数组冒泡排序的方法 发布时间:2020-06-24 09:21:42 来源:亿速云 阅读:82 作者:Leah 本篇文章展示了java实现数组冒泡排序的具体操作,代码简明扼要容易理解,绝对 ...

  6. JavaScript数组升序和降序方法

    sort() 方法用于对数组的元素进行排序. arrayObject.sort(sortby) sortby:可选.规定排序顺序.必须是函数 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进 ...

  7. java升序排列数组_java数组的升序降序排列

    展开全部 先来说你的问题,,你要实现写入文件是排序的结果,,那么你就应该先排序再写到文件,,而不是32313133353236313431303231363533e59b9ee7ad943133333 ...

  8. java数组:排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。`

    有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置` public ...

  9. java数组冒泡排序

    冒泡排序(Bubble Sort)是常用的数组排序算法之一 冒泡排序 提示:冒泡排序的基本思想是:对比相邻的元素值,如果满足条件就交换元素值,把较小的元素值移动到数组前面,把大的元素值移动到数组后面( ...

最新文章

  1. 福布斯:14位技术专家预测,未来哪些行业将被AI颠覆?
  2. linux set include path,set_include_path()的用法
  3. mbedtls移植体验
  4. 移动硬盘拷贝linux文件,Linux下使用移动硬盘拷贝数据
  5. String ua = request.getHeader(user-agent)---ua值为null
  6. PHP 函数 - 返回值
  7. 新商业蓝皮书2021
  8. PAT1036.跟奥巴马一起编程
  9. markdown中快速插入Emoji表情包语法速查表!!!
  10. java 登陆拦截器_java 登录拦截器
  11. android串口wifi模块,一文深度了解串口WiFi模块的应用场景
  12. 130个资源网站,总有一个你用得着
  13. 牛客网暑期ACM多校训练营(第三场) J.Distance to Work 计算几何
  14. 听李天飞《大话西游》有感
  15. AI小程序开放2个超级入口,还能分享朋友圈
  16. 计算机主板电路总线类型没有,电脑主板总线是什么意思
  17. Word标题编号变黑框
  18. Altium Designer原理图转OrCAD原理图方法
  19. 教你如何用好MindMapper
  20. 【android】向模拟器的sdcard中添加文件

热门文章

  1. ubuntu20 编译dpdk错误 -Werror=address-of-packed-member
  2. php字符串怎么传到html_php字符串函数(四):html与字符串之间的转换
  3. 字符串不替代_TI-Nspire 系列的字符串操作
  4. spring中的IOC和AOP
  5. 【Spark】Spark基础教程知识点
  6. Linux中xml导入数据库,XML数据库 BaseX
  7. mysql导入表结构命令是_mysql,命令导入\导出表结构或数据
  8. 全面了解HTTP和HTTPS(开发人员必备)
  9. 数据库---练习题(45道)
  10. Scott 32 岁前端年终总结,探寻另一种可能