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. spring boot 框架根據 sql 創建語句自動生成 MVC層類代碼

    GITHUB: https://github.com/lin1270/spring_boot_sql2code 會自動生成model.mapper.service.controller. 代碼使用No ...

  2. MySQL_入手<二>之删--改--查

    接上 上篇文章继续 查询 # 比较运算 # 根据WHERE条件查找数据: = > < >= <= != select * from t_hero where age < ...

  3. Python-RabbitMQ-topic(细致消息过滤的广播模式)

    生产者:topic_publiser.py import pika,sys connection = pika.BlockingConnection(pika.ConnectionParameters ...

  4. 111、什么是stack (Swarm18)

    参考https://www.cnblogs.com/CloudMan6/p/8119150.html   什么是 stack ?    在将这个之前先回顾一下前面部署WordPress的过程:     ...

  5. 应对Hadoop集群数据疯长,这里祭出了4个治理对策!

    一.背景 在目前规模比较大的互联网公司中,总数据量能达到10PB甚至几十PB数据量的公司,我认为中国已经有超过了20家了.而在这些公司中,也有很多家公司的 日数据增长达到100TB+ 了. 所以我们每 ...

  6. 封装H5ToApp方法

    方法一: 新建个 Android studio 项目,用 webview 指定访问你的页面 方法二: 使用工具 cordova  附上地址:http://cordova.axuer.com/docs/ ...

  7. 多线程编程-- part 5.2 JUC锁之Condition条件

    1.Condition介绍 Condition的作用是对锁进行更精确的控制.Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当 ...

  8. ios 动画:底部标签栏的概念设计

    本文汇集了大量优秀的ios底部标签栏动效设计,并附上技术实现的指南,对于设计师和开发者都提供了很好的灵感来源和学习资源. 我们每天都见到tab bars,它们指引用户,使得他们能够快速在不同的tab中 ...

  9. 深入理解并使用python的模块与包

    模块 编写好的一个python文件可以有两种用途:1)脚本,一个文件就是整个程序,用来被执行2)模块,文件中存放着一堆功能,用来被导入使用 模块的分类 1)开发者编写的 .py文件2 ) 由C或C++ ...

  10. 2019.9.25使用BP和Hydra爆破相关的服务

    使用BP和Hydra爆破相关的服务. Hydra:九头蛇,开源的功能强大的爆破工具,支持的服务有很多,使用hydra爆破c/s架构的服务.使用bp爆破web登录端口. dvwa:web应用程序漏洞演练 ...