用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.算法 ...
随机推荐
- PHP 核心特性 - 匿名函数
提出 在匿名函数出现之前,所有的函数都需要先命名才能使用 function increment($value) { return $value + 1; } array_map('increment' ...
- java编程思想第四版第十一章习题
第一题 package net.mindview.holding.test1; import java.util.ArrayList; import java.util.List; /** * 沙鼠 ...
- nyoj 45-棋盘覆盖 (高精度, Java)
棋盘覆盖 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 在一个2k×2k(1<=k<=100)的棋盘中恰有一方格被覆盖,如图1(k=2时),现用一缺角的 ...
- TreeMap树映射取出对象的方式
1.直接获取该TreeMap集合中的关系:entrySet() Map接口中的方法,返回值类型是该集合中的各个关系:返回值类型是:Set类型的Map.EntrySet类型:然后在通过Set集合中特有的 ...
- Python基础教程(第3版)学习笔记
第1章.基础 1.几个小知识点 多用 help() 帮助文档 除法运算 / 除法运算,得到结果为浮点数: // 整除运算,得到整数值(向下取整): % 取余操作 (结果符号与除数符号相同),本质上: ...
- cglib测试例子和源码详解
目录 简介 为什么会有动态代理? 常见的动态代理有哪些? 什么是cglib 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写被代理类 编写MethodInterceptor接口实现类 编写 ...
- 带你涨姿势的认识一下 Kafka 消费者
之前我们介绍过了 Kafka 整体架构,Kafka 生产者,Kafka 生产的消息最终流向哪里呢?当然是需要消费了,要不只产生一系列数据没有任何作用啊,如果把 Kafka 比作餐厅的话,那么生产者就是 ...
- MySQL锁会不会,你就差看一看
数据库锁知识 不少人在开发的时候,应该很少会注意到这些锁的问题,也很少会给程序加锁(除了库存这些对数量准确性要求极高的情况下),即使我们不会这些锁知识,我们的程序在一般情况下还是可以跑得好好的.因为这 ...
- webpack-dev-middleware 和 webpack-hot-middleware 配置开发环境和生产环境;webpack脚手架;仿vue-cli
webpack-dev-server更新后自带express服务器,已经不需要自己搭建.vue-cli从17年底左右也换成了最新的webpack-dev-server,而不是用webpack-dev- ...
- 2019-11-27:kali 2019-4中文乱码解决方法
1.更换阿里源 vim /etc/apt/soul,编辑源之后,apt-get updata && apt-get upgrade && apt-get clean , ...
