插入排序,选择排序,冒泡排序等常用排序算法(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)
当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...
随机推荐
- mysql事件(event)
[小结]简单案例 SET GLOBAL event_scheduler=1delimiter $$ create definer = current_user event `test`.`event_ ...
- CentOS7安装Git-2.22.1
1.Git: 分布式版本控制系统(最初用于Linux),每个人的电脑上都是一个完整的版本库,具有强大的分支管理. 自己可以在脱机环境查看开发的版本历史 多人开发时如果充当中央仓库的Git仓库挂了,任何 ...
- 设计模式:解释器模式(Interpreter)
为人处事是一门大学问,察言观色.听懂弦外之音都是非常重要的,老板跟你说“XX你最近表现平平啊,还得要多努力”,如果你不当回事,平常对待,可能下次就是“XX,恩,你人还是不错,平常工作也很努力,但是我想 ...
- Android layout_marginBottom无效
layout_marginBottom属性无效的原因可能是顶部没有View组件(进行相对绘制)
- GitHub从小白到熟悉<四>
GitHub issue 使用教程 创建 一个issue (显示所有bug 或者 说 交流的 问题列表)
- Python_3day
循环 循环是一种控制语句块重复执行的结构 while 适用于广度遍历 for 开发中经常使用 while 循环 当一个条件保持真的时候while循环重复执行语句 while 循环一定要有结束条件, ...
- Constructing Tests CodeForces - 938C
大意: 定义m-free矩阵: 所有$m*m$的子矩阵至少有一个$0$的$01$矩阵. 定义一个函数$f(n,m)=n*n$的m-free矩阵最大$1$的个数. 给出$t$个询问, 每个询问给出$x$ ...
- hadoop批量命令脚本xcall.sh及jps找不到命令解决
1.xcall.sh批量命令脚本: #!/bin/bash params=$@ i=128 for (( i=128 ; i <= 131 ; i = $i + 1 )) ; do echo = ...
- Git 一般性操作
git全局设定 git config --global user.name “码云账号” git config --global user.email “码云注册邮箱” git 定位文件夹cd进入到需 ...
- 关于redis的几件小事(一)redis的使用目的与问题
1.redis是用来干嘛的? Redis is an open source (BSD licensed), in-memory data structure store, used as a dat ...