插入排序,选择排序,冒泡排序等常用排序算法(java实现)
package org.webdriver.autotest.Study;
import java.util.*;
public class sort_examp{
public static void main(String[] args)
{
Integer[] num={49,38,65,97,76,13,27,49,78,34,12,64,1};
//insertsort(num);
//selectsort(num);
maopaosort(num); } //直接插入排序
public static void insertsort(Integer[] num)
{
System.out.println("排序之前:");
for(int i=0;i<num.length;i++)
{
System.out.print(num[i]+" ");
}
System.out.println();
//直接插入排序,从数组第二个位置开始
for(int i=1;i<num.length;i++)
{
//待插入元素,从第二个元素开始.num[i]为前一组元素
int insertnum=num[i];
int j;
for(j=i-1;j>=0;j--)
{
//将大于待插入元素的,值往后移1位,num[j]为后一组元素
if(num[j]>insertnum)
{num[j+1]=num[j];}else {
break;
} }
//直到不存在num[j]>insertnum的时候,不移动位置
num[j+1]=insertnum;
System.out.println();
System.out.println("第:"+i+"轮排序");
for (int k = 0; k < num.length; k++)
{
System.out.print(num[k]+" ");
} }
System.out.println();
System.out.println("排序之后:");
for (int i = 0; i < num.length; i++)
{
System.out.print(num[i]+" ");
} }
//选择排序
public static void selectsort(Integer[] num)
{
System.out.println("排序之前:");
for(int i=0;i<num.length;i++)
{
System.out.print(num[i]+",");
}
System.out.println();
//i为排序结果的顺序号
for(int i=0;i<num.length;i++)
{
//假定一个最小值min
int min=num[i];
//n存储最小值索引(位置)
int n=i;
//从第二个数开始比较,把每次比较出的最小值放到左边
for(int j=i+1;j<num.length;j++)
{
if(num[j]<min)//找出最小值
{
//num[j]最小,将num[j]赋值给min,并记录num[j]原来的位置保存到n
min=num[j];
n=j; }
//将最小值跟比较值交换位置,将num[i]放到num[j]的位置
num[n]=num[i];
//将最小值按顺序放到i的位置
num[i]=min;
}
System.out.println();
int l=i+1;
System.out.println("第:"+l+"轮排序");
for (int k = 0; k < num.length; k++)
{
System.out.print(num[k]+" ");
}
}
System.out.println();
System.out.println("排序之后:");
for (int i = 0; i < num.length; i++)
{
System.out.print(num[i]+" ");
} }
//冒泡排序
public static void maopaosort(Integer[] num)
{
System.out.println("排序之前:");
for (int i = 0; i < num.length; i++)
{
System.out.print(num[i]+" ");
}
//冒泡排序
for (int i = 0; i < num.length; i++)
{
for(int j = 0; j<num.length-i-1; j++)
{
//这里-i主要是每遍历一次都把最大的i个数沉到最底下去了,没有必要再替换了
if(num[j]>num[j+1])
{
int temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
System.out.println();
int l=i+1;
System.out.println("第:"+l+"轮排序");
for (int k = 0; k < num.length; k++)
{
System.out.print(num[k]+" ");
} }
System.out.println();
System.out.println("排序之后:");
for (int i = 0; i < num.length; i++)
{
System.out.print(num[i]+" ");
}
} }
插入排序,选择排序,冒泡排序等常用排序算法(java实现)的更多相关文章
- java-数组排序--冒泡排序、鸡尾酒排序、地精排序
冒泡排序 冒泡排序的思想是,让依次数组中相邻的数进行比较,如果前一个数比后一个数大,则两数进行交换,大的数就会象泡泡一样慢慢浮在水面上了 见图解 稳定性:稳定时间复杂度:O(n2) public st ...
- Java 常用排序算法实现--快速排序、插入排序、选择、冒泡
public class ArrayOperation { //二分查找算法 public static int branchSearch(int[] array, int searc ...
- 常用算法Java实现之选择排序
选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序. 具体流程如下: 1.首先从原数组中选择最小的1个数据,将其置于第一个位置. 2.然后从剩下的数据中再选择其中最小的一个数据,并将 ...
- DotNet常用排序算法总结
数据结构和算法对一个程序来说是至关重要的,现在介绍一下几种算法,在项目中较为常用的算法有:冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等7中算法. 现在介绍选择排序算法, ...
- Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法
Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...
- 转载部长一篇大作:常用排序算法之JavaScript实现
转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...
- Java 常用排序算法/程序员必须掌握的 8大排序算法
Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...
- 常用排序算法的python实现和性能分析
常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...
- 面试中常用排序算法实现(Java)
当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...
随机推荐
- Fiddler-打断点(bpu)
一.断点 1.为什么要打断点? 比如一个购买的金额输入框,输入框前端做了限制大于100,那么我们测试的时候,需要测试小于100的情况下.很显然前端只能输入大于100的.这时我们可以先抓到接口,修改请求 ...
- SSM @Autowired注入失败
1, Intellij IDEA中Mybatis Mapper自动注入警告的6种解决方案 https://blog.csdn.net/weixin_30945319/article/details/9 ...
- 错误:编码GBK的不可映射字符解决办法
今天在cmd测试java代码的时候遇到了一个错误 解决办法: 输入javac -encoding utf-8 文件名.java 原因: 由于JDK是国际版的,我们在用javac编译时,编译程序首 ...
- unittest之一框架、suite
1.unittest是Python的标准库里的模块,所以在创建测试方法时,需直接导入unittest即可 2.unittest框架的六大模块: 测试用例TestCase 测试套件TestSuit:测试 ...
- Box-shadow制作漂亮的外阴影输入框
背景:之前做项目中的一个移动端页面,关于在搜索框中输入信息查找对应的照片 改了几次ui图之后,最终的搜索框的设计图如下: 开始做页面的时候,就想到了用box-shadow 来实现外阴影边框.用bord ...
- MySQL两种内核对比
MySQL内核 https://blog.csdn.net/baichoufei90/article/details/83504446 关键字:全文索引 索引外置 两种内核:MyISAM 和InnoD ...
- Python爬虫 Selenium与PhantomJS
Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动化操作,不同是Sele ...
- |、&、||、&&、^符号含义
|和&为计算机中二进制之间的位运算 在计算机中二进制的0表示false,1表示true. |为位运算中的或运算:它的运算逻辑为一真则真,全假则假 &为位运算中的并运算:它的运算逻辑为一 ...
- 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...
- this全面解析<转>
先搞明白一个很重要的概念 —— this的值是在执行的时候才能确认,定义的时候不能确认! 为什么呢 —— 因为this是执行上下文环境的一部分,而执行上下文需要在代码执行之前确定,而不是定义的时候. ...