插入排序,选择排序,冒泡排序等常用排序算法(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)
当我们进行数据处理的时候,往往需要对数据进行查找操作,一个有序的数据集往往能够在高效的查找算法下快速得到结果.所以排序的效率就会显的十分重要,本篇我们将着重的介绍几个常见的排序算法,涉及如下内容: 排 ...
随机推荐
- 检测Python程序本身是否已经在运行
为runner.py实现一个函数,检测是否有其他的runner.py进程在正在执行? 除主要用到os模块,还用到了第三方模块psutil
- 使用request+bs4爬取所有股票信息
爬取前戏 我们要知道利用selenium是非常无敌的,自我认为什么反爬不反爬都不在话下,但是今天我们为什么要用request+bs4爬取所有股票信息呢?因为他比较原始,因此今天的数据,爬取起来也是比较 ...
- Docker 构建私有镜像仓库
在使用Docker一段时间后,往往会发现手头积累了大量的自定义镜像文件,这些文件通过公有仓库进行管理并不方便,另外有时候只是希望在内部用户之间进行分享,不希望暴露出去.这种情况下,就有必要搭建一个本地 ...
- MyBatis的foreach查询(List、Array、Map)
mybatis 中 foreach collection的三种用法 foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有 item,index ...
- redis 学习(12)-- redis 发布订阅
redis 发布订阅 发布订阅模式中的角色 发布者(publisher) 订阅者(subscriber) 频道(channel) 如图所示: 发布者发布消息到频道,订阅了频道的订阅者可以收到消息,订阅 ...
- delegate作为操作符的使用
lambda表达式的出现基本上取代了delegate操作符的使用 public MainWindow() { InitializeComponent(); this.button1.Click += ...
- Mysql学习(一)之简单介绍
数据库简介 数据库分类 关系型数据库:MySQL.Oracle.SQLServer.Access.db2.fox pro 文件型数据库:sqlite.mongodb 空间型数据库: 数据库分为两端 数 ...
- QuickSort(快排)的JAVA实现
QuickSort的JAVA实现 这是一篇算法课程的复习笔记 用JAVA对快排又实现了一遍. 先实现的是那个easy版的,每次选的排序轴都是数组的最后一个: package com.algorithm ...
- 将数据导出到 excel ,然后下载下来
private static final String SHEET_NAME = "培养计划表"; /** * @param response * @param trainingN ...
- Hadoop大数据平台入门——HDFS和MapReduce
随着硬件水平的不断提高,需要处理数据的大小也越来越大.大家都知道,现在大数据有多火爆,都认为21世纪是大数据的世纪.当然我也想打上时代的便车.所以今天来学习一下大数据存储和处理. 随着数据的不断变大, ...