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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/283211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能教程007:创建一个卷积神经网络(2)

2019独角兽企业重金招聘Python工程师标准>>> 我们如何对图像应用卷积 当我们在图像上应用卷积时&#xff0c;我们在两个维度上执行卷积——水平和竖直方向。我们混合两桶信息&#xff1a;第一桶是输入的图像&#xff0c;由三个矩阵构成——RGB三通道&#xff0c;其中…

释放mysql ibdata1文件_释放MySQL ibdata1文件的空间

在MySQL数据库中&#xff0c;如果不指定innodb_file_per_table参数&#xff0c;单独存在每个表的数据&#xff0c;MySQL的数据都会存放在ibdata1文件。mysql ibdata1存放数据&#xff0c;索引等&#xff0c;是MYSQL的最主要的数据。步骤&#xff1a;1&#xff0c;备份数据库从命…

【系统知识点】linux入门基础命令

大概总结了一下一些基础命令&#xff0c;仅仅是帮助基础使用linux文件系统&#xff0c;如果还有相关基础命令&#xff0c;希望大家留言一起补充汇总一下&#xff01;命令的基本格式&#xff1a;格式&#xff1a;command [-options] parameter1 parameter2 …ps&#xff1a;第一…

Blazor University (48)依赖注入 —— Scoped 依赖

原文链接&#xff1a;https://blazor-university.com/dependency-injection/dependency-lifetimes-and-scopes/scoped-dependencies/Scoped 依赖Scoped 依赖项类似于 Singleton 依赖项&#xff0c;因为 Blazor 会将相同的实例注入到依赖它的每个对象中&#xff0c;但不同之处在…

c 连接mysql怎么增删改_C++ API方式连接mysql数据库实现增删改查

这里复制的http://www.bitscn.com/pdb/mysql/201407/226252.html一、环境配置1&#xff0c;装好mysql&#xff0c;新建一个C控制台工程(从最简单的弄起&#xff0c;这个会了&#xff0c;可以往任何c工程移植)&#xff0c;在vs2010中设置&#xff0c;工程--属性--VC目录--包含目…

阿里云如何实现海量短视频的极速分发?答案在这里!

摘要&#xff1a;短视频行业目前比较火热&#xff0c;但是如何快速的实现海量短视频的极速分发&#xff0c;对于短视频业务提供方来讲是一个比较棘手的问题。阿里云技术专家将带领大家从视频的上传、采集、存储和CDN分发等方面为我们介绍阿里云的整体方案&#xff0c;并且重点讲…

GitHub项目管理维护实用教程

GitHub项目维护教程 1&#xff09;注册GitHub账户并登陆&#xff1b; 2&#xff09;在Windows cmd&#xff08;或Ubuntu中的terminal&#xff09;中cd到自己的工作目录&#xff0c;将仓库clone下来&#xff1a; 命令&#xff1a; 1 git clone https://github.com/... #项目地址…

图文详解cacti的安装和使用

简介&#xff1a; 1.cacti介绍2.安装服务端3.安装客户端4.添加监控的设备cacti的介绍Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具Cacti是通过 snmpget来获取数据&#xff0c;使用 RRDtool绘画图形&#xff0c;而且你完全可以不需要了解RRDtool复杂…

记一次 .NET 某金融企业 WPF 程序卡死分析

一&#xff1a;背景 1. 讲故事前段时间遇到了一个难度比较高的 dump&#xff0c;经过几个小时的探索&#xff0c;终于给找出来了&#xff0c;在这里做一下整理&#xff0c;希望对大家有所帮助&#xff0c;对自己也是一个总结&#xff0c;好了&#xff0c;老规矩&#xff0c;上 …

如何将图片放到mysql_怎么将图片添加到mysql中

将图片添加到mysql中的方法&#xff1a;首先将数据库存储图片的字段类型设置为blob二进制大对象类型&#xff1b;然后将图片流转化为二进制&#xff1b;最后将图片插入数据库即可。正常的图片储存要么放进本地磁盘&#xff0c;要么就存进数据库。存入本地很简单&#xff0c;现在…

Java线程与Linux内核线程的映射关系

http://blog.sina.com.cn/s/blog_605f5b4f010198b5.html Linux从内核2.6開始使用NPTL &#xff08;Native POSIX Thread Library&#xff09;支持&#xff0c;但这时线程本质上还轻量级进程。Java里的线程是由JVM来管理的。它怎样相应到操作系统的线程是由JVM的实现来确定的。L…

YoursLC 有源 低代码 项目介绍

YoursLC 是我们独立研发的一款低代码产品&#xff0c;YoursLC-yours你们的、LC是低代码low-code的缩写&#xff0c;中文名称&#xff1a;有源低代码&#xff0c; 是一套双输出的低代码产品&#xff1a;既能完整输出功能又能100%输出源码。满足用户高效率、低成本和个性化的需求…

stm32电机控制定时器1_STM32通过PWM控制电机速度

做STM32智能小车的实验中会用到定时器PWM输出&#xff0c;来改变直流电机的转速。分享本文了解如何通过PWM实现对电机速度的控制。PWM控制电机速度的基本原理PWM(Pulse Width Modulation)&#xff0c;也就是脉冲宽度调制。PWM中有一个比较重要的概念&#xff0c;占空比&#xf…

走向无后端的系统开发实践:CRUD自动化与强约定的REST接口

2019独角兽企业重金招聘Python工程师标准>>> ttp://mp.weixin.qq.com/s?__bizMzAwMDU1MTE1OQ&idx1&mid2653548079&sn2377b625db58b2ea93c3ef2d87e4c395 转载于:https://my.oschina.net/yunjie/blog/806130

jsp连接数据库

有关web开发……其中的关键步骤&#xff1a; request.setCharacterEncoding("utf-8"); //获取用户名 String uNamerequest.getParameter("username"); //获取密码 String pwrequest.getParameter("password"); //编写sql语句 String sql"se…

C# 二十年语法变迁之 C#9参考

C# 二十年语法变迁之 C# 9参考自从 C# 于 2000 年推出以来&#xff0c;该语言的规模已经大大增加&#xff0c;我不确定任何人是否有可能在任何时候都对每一种语言特性都有深入的了解。因此&#xff0c;我想写一系列快速参考文章&#xff0c;总结自 C# 2.0 以来所有主要的新语言…

mysql char varchar 性能_Mysql小细节:varchar与char在性能上的特点

varchar与char的一个主要区别是存储方式的不同varchar 是变长存储占用的存储空间 存储内容实际大小 长度记录位char 是定长存储占用的存储空间 字段声明的宽度存储方式对性能是有影响的例如分别使用 varchar(10) 与 varchar(255) 定义一个字段&#xff0c;实际存储的字符串为…

Dubbo源码解析之Zookeeper连接

2019独角兽企业重金招聘Python工程师标准>>> 注&#xff1a;Dubbo的版本是2.5.7。 图1 RegistryProtocol的export时序图 注册中心有Zookeeper、Redis、Dubbo&#xff0c;分别对应ZookeeperRegistry、RedisRegistry、MulticastRegistry。 连接Dubbo的客户端有俩种&am…

推翻自己和过往,重学自定义View

http://blog.csdn.net/lfdfhl/article/details/51671038 深入探讨Android异步精髓Handler 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架&#xff08;1&#xff09;— 核心基础 Android多分辨率适配框架&#xff08;2&#xff09;— 原理剖析 Android多分辨率…

SHELL 脚本小技巧

脚本很简单&#xff0c;直接上功能介绍及脚本&#xff0c;可以做模板使用&#xff1a; 记录日志,记录脚本开始执行时间、结束时间usage 函数&#xff0c;脚本需接参数执行&#xff0c;避免误执行&#xff0c;告诉用户&#xff0c;这个脚本的使用方法加锁&#xff0c;创建锁文件…