用Java编程语言对一个无序整形数组进行排序(冒泡排序,选择排序,插入排序)
public static void main(String[] args) {
/**
* 冒泡排序
* 思路:每个轮次都让第一个数和其后所有的数进行轮比较,如果这轮的第一个数大则和其下一个数交换位置,如果他一直大则冒泡的最后一位
* 1、除了最后一位,前面的数都需要进行冒泡
* 2、第一轮,第一个数进行冒泡,和其后的数进行比较
* 3、第二轮,新序列的第一个数进行冒泡
*/ int[] ary=new int[]{90,50,40,60,55};
//外层循环控制有多少个数需要比较的轮数,最原始最后一位数不需要冒泡,数组长度减一
for (int i=1;i<ary.length;i++){
//内层循环控制每个轮次的第一个数比较换位的过程
for (int j=0;j<ary.length-1;j++){
//如果这个轮次的第一个数大于其后的数就一直换位,直到比他大的数出现,不换位了,新的序列生成
if (ary[j]>ary[j+1]){
int tmp;
tmp=ary[j];
ary[j]=ary[j+1];
ary[j+1]=tmp;
}
}
}
//foreach()遍历输出
for (int i:ary){
System.out.print(i+"\t");
}
}
运行结果:
public static void main(String[] args) {
/**
* 选择排序
* 思路:从剩余数组中选择最小的数并获取它的的下标,然后把最小的数与剩余数组的第一个数进行交换位置
*/ int[] ary=new int[]{90,50,40,60,55};
//外层循环表示从剩余数组寻找最小值的轮数,数组长度为5的话,寻找4轮
for (int i=0;i<ary.length-1;i++){
//假定的最小值的下标,第一轮为ary[0],每次为剩余数组的第一个数
int minindex=i;
//j=i表示从剩余数组中查找最小数的下标
for (int j=i;j<ary.length;j++){
//如果假定的最小值大于其后的数,则更换下标
if (ary[minindex]>ary[j]){
minindex=j;
}
}
if (ary[i]!=ary[minindex]){
int tmp;
tmp=ary[i];
ary[i]=ary[minindex];
ary[minindex]=tmp;
}
}
//foreach()遍历输出
for (int a:ary){
System.out.print(a+"\t");
}
}
运行结果:
public static void main(String[] args) {
/**
* 插入排序
* 思路:第一轮,先把第一个数当成一个有序数组,把剩余的数从第一个开始逐个往假定的有序数组中插入,插入后还是有序的,
*/
int[] ary=new int[]{50,30,40,10,20};
//错误思路
// for (int i=1;i<5;i++){
// for (int j=0;j<i;j++){
// if (ary[j]>ary[i]){
// int t;
// t=ary[j];
// ary[j]=ary[i];
// ary[i]=t;
// }
// }
// }
for (int i=1;i<5;i++){
int tmp=ary[i];
int j;
//i代表假定的有序数组的长度,i-1代表有序数组的最后一位的下标
for ( j=i-1;j>=0;j--){
//如果有序数组中的数大于待插入的数,则此数和其后的数都向后移动一位
if (ary[j]>tmp){
ary[j+1]=ary[j];
}else{
break;
}
}
//循环结束后,插入待插入的数,这个时候j的值是-1或者是有序数组中比待插入数小的数的下标,不加1的话会插错位置,所以j要加1
ary[j+1]=tmp;
} //使用Arrays工具类对数组排序
Arrays.sort(ary);
//foreach()遍历输出
for(int a:ary){
System.out.print(a+"\t");
}
}
运行结果:
用Java编程语言对一个无序整形数组进行排序(冒泡排序,选择排序,插入排序)的更多相关文章
- 选择排序—简单选择排序(Simple Selection Sort)原理以及Java实现
基本思想: 在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素 ...
- java怎么定义一个二维数组?
java中使用 [][] 来定义二维数组 定义数组时也可同时初始化下面是一些例子float[][] numthree; //定义一个float类型的2维数组numthree=new float[5][ ...
- BAT面试题 - 找一个无序实数数组中的最大差值
题目描写叙述: 一个无序的实数数组a[i].要求求里面大小相邻的实数的差的最大值.比方 double a[]={1,5,4,0.2,100} 这个无序的数组,相邻的数的最大差值为100-5=95. 题 ...
- 基本排序算法——选择排序java实现
选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ...
- 过三关 Java冒泡排序选择排序插入排序小练习
材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...
- 9, java数据结构和算法: 直接插入排序, 希尔排序, 简单选择排序, 堆排序, 冒泡排序,快速排序, 归并排序, 基数排序的分析和代码实现
内部排序: 就是使用内存空间来排序 外部排序: 就是数据量很大,需要借助外部存储(文件)来排序. 直接上代码: package com.lvcai; public class Sort { publi ...
- 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现
这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...
- Java基础知识强化53:经典排序之选择排序(SelectionSort)
1.选择排序的原理图: 2. 选择排序代码实现: package cn.itcast_02; /* * 数组排序之选择排序: * 从0索引开始,依次和后面元素比较,小的往前放,第一次完毕,最小值出现在 ...
- 【java排序】 选择排序,插入排序,希尔算法
一.选择排序 1.基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止. 2.实例 3.算法 ...
随机推荐
- Java程序线上故障排查
目录 一.Linux 内存和cpu 网络 磁盘 /proc文件系统 二.JVM Java堆和垃圾收集器 gc日志分析 JVMTI介绍 Attach机制 java自带工具 三.三方工具 jprofile ...
- redhat、centos7系列破解密码
redhat或者centos7,破解密码: 1.开机出现引导菜单时按下e键 2.找到linux16行,在其后追加 rd.break 参数 console=tty0 3.启动到特定的模式,由于更改密码需 ...
- U盘安装centos7 系统卡在 starting dracut initqueue hook
U盘安装centos7启动过程中出现: [ok] Reached target Basic System 或者 [ok] starting dracut initqueue hook 下面是我解决的过 ...
- 力扣(LeetCode)求众数 个人题解
给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] 输出: 3 ...
- 十二、powerManager
PowerManger模块主要负责电池工作状态,电量监测,充放电管理. 1.1 初始化 在PowerInit()接口中完成了powerManager模块的初始化,在初始化的末端,进行了多个AD ...
- 初探three.js
相信大多数选择前端的小伙伴都有一个设计师的梦,今天我来说一说three.js.three.js是一款运行在浏览器中的 3D 引擎,你可以用它创建各种三维场景,包括了摄影机.光影.材质等各种对象.学习了 ...
- Vue packages version mismatch版本问题的解决
今天下载了一个vue项目,npm run dev 时发现报错,错误信息入下: error in .src/components/mobile/SeniorDetail.vue Module build ...
- web前端面试题总结(html、css)
1.对 WEB 标准以及 W3C 的理解与认识? 参考: 标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链 css 和 js 脚本. 结构行为表现的分离.文件下载与页面速度更快.内容能 ...
- JSAPI 基于arcgis_js_api3.3的部署
JSAPI,即ArcGIS API For JavaScript,是arcgis基于JavaScript环境下的开发包.包含Dojo框架. ||Dojo结构如下:=================== ...
- web前端之css基础
CSS选择器 元素选择器 p{color:red;} ID选择器 #li{ background-color:red; } 类选择器 .c1{ font-size:15px; } 注意: 样式类名不要 ...