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实现)的更多相关文章

  1. java-数组排序--冒泡排序、鸡尾酒排序、地精排序

    冒泡排序 冒泡排序的思想是,让依次数组中相邻的数进行比较,如果前一个数比后一个数大,则两数进行交换,大的数就会象泡泡一样慢慢浮在水面上了 见图解 稳定性:稳定时间复杂度:O(n2) public st ...

  2. Java 常用排序算法实现--快速排序、插入排序、选择、冒泡

      public class ArrayOperation {    //二分查找算法    public static int branchSearch(int[] array, int searc ...

  3. 常用算法Java实现之选择排序

    选择排序算法在每一步中选取最小值来重新排序,通过选择和交换来实现排序. 具体流程如下: 1.首先从原数组中选择最小的1个数据,将其置于第一个位置. 2.然后从剩下的数据中再选择其中最小的一个数据,并将 ...

  4. DotNet常用排序算法总结

    数据结构和算法对一个程序来说是至关重要的,现在介绍一下几种算法,在项目中较为常用的算法有:冒泡排序,简单选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等7中算法. 现在介绍选择排序算法, ...

  5. Java常用排序算法+程序员必须掌握的8大排序算法+二分法查找法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 本文由网络资料整理转载而来,如有问题,欢迎指正! 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排 ...

  6. 转载部长一篇大作:常用排序算法之JavaScript实现

    转载部长一篇大作:常用排序算法之JavaScript实现 注:本文是转载实验室同门王部长的大作,找实习找工作在即,本文颇有用处!原文出处:http://www.cnblogs.com/ywang172 ...

  7. Java 常用排序算法/程序员必须掌握的 8大排序算法

    Java 常用排序算法/程序员必须掌握的 8大排序算法 分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配 ...

  8. 常用排序算法的python实现和性能分析

    常用排序算法的python实现和性能分析 一年一度的换工作高峰又到了,HR大概每天都塞几份简历过来,基本上一天安排两个面试的话,当天就只能加班干活了.趁着面试别人的机会,自己也把一些基础算法和一些面试 ...

  9. 面试中常用排序算法实现(Java)

    当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...

随机推荐

  1. coredump产生的几种可能情况

    coredump产生的几种可能情况 造成程序coredump的原因有很多,这里总结一些比较常用的经验吧: 1,内存访问越界 a) 由于使用错误的下标,导致数组访问越界. b) 搜索字符串时,依靠字符串 ...

  2. 2018.08.14【2018提高组】模拟A组 比赛总结

    题解 这次的A组难得得水. T1 这题我一看,就想起了GDOI的一道题--密码锁 \(O(n)\)算法--差分 于是乎兴奋地发现这道题可以用差分来解. 设\(f_i=a_i-a_{i-1}\). 然后 ...

  3. [BZOJ2594] [WC2006]水管局长(Kruskal+LCT)

    [BZOJ2594] [WC2006]水管局长(Kruskal+LCT) 题面 SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可 ...

  4. Ubuntu 系统安装 Docker

    安装 Docker CE 有多种方法,下面是最简单的通过Docker仓库的安装方法,其他方法参见官方文档. 设置仓库 刷新软件包 sudo apt-get update 安装必要的软件包 sudo a ...

  5. maven中scope属性的

    Dependency Scope 在POM 4中,<dependency>中还引入了<scope>,它主要管理依赖的部署.目前<scope>可以使用5个值: * c ...

  6. (转)MQTT 入门介绍

    原文链接:https://blog.csdn.net/qq_2887... MQTT 入门介绍 一.简述 MQTT(Message Queuing Telemetry Transport,消息队列遥测 ...

  7. button标签与input type=button标签使用的差异

    button标签和input type=button标签都是html文档中用来表示按钮属性的元素,不过他们在布局和实际使用功能中存在一些差异. 下面将项目中遇到的一些总结如下: 1.属性和布局差异. ...

  8. java中的异常和处理详细理解

    异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的. 比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error:如果你用System.ou ...

  9. 04 Python网络爬虫 <<爬取get/post请求的页面数据>>之requests模块

    一. urllib库 urllib是Python自带的一个用于爬虫的库,其主要作用就是可以通过代码模拟浏览器发送请求.其常被用到的子模块在Python3中的为urllib.request和urllib ...

  10. apply,call 和 bind 有什么区别

    三者都可以把函数应用到其他对象上,不是自身对象,apply,call是直接执行函数调用,bind是绑定,执行需要再次调用,apply和call的区别是apply接受数组作为参数,而call是接受逗号分 ...