冒泡排序:

思想: 冒泡排序重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说排序完成

特点:比较稳定,排序数较小是比较好

package cn.guangboyuan;

/**
* @author Red Ants
* 微信公众号:程序员之路
* 两种冒泡排序的性能比较
*/
public class DubbleSort {
private static boolean checkArray(int[] data){
if(data == null || data.length == 0){
return false;
}
return true;
} public static int[] dubbleSort(int[] data){
if(!checkArray(data)){
return null;
}
int temp;
int runNum = 0;
for (int i = 0; i < data.length; i++) {
System.out.println(String.format("i=%d", i));
for (int j = i; j < data.length; j++) {
System.out.print(String.format("j=%d,", j));
if(data[i] > data[j]){
temp = data[i];
data[i] =data[j];
data[j] = temp;
}
runNum++;
}
System.out.println("");
}
System.out.println(String.format("dubbleSort运行次数 : %d", runNum));
return data;
} public static int[] dubbleSort1(int[] data){
if(!checkArray(data)){
return null;
}
System.out.println(String.format("int数组长度:%d", data.length));
int temp;
int runNum = 0;
for (int i = 0; i < data.length-1; i++) {
System.out.println(String.format("i=%d", i));
for (int j = 0; j < data.length-1-i; j++) {
System.out.print(String.format("j=%d,", j));
if(data[j] > data[j+1]){
temp = data[j];
data[j] =data[j+1];
data[j+1] = temp;
}
runNum++;
}
System.out.println("");
}
System.out.println(String.format("dubbleSort运行次数 : %d", runNum));
return data;
} public static void main(String[] args) {
int[] data = new int[]{8,4,9,13,11,99,2,1,5,3,6};;
dubbleSort(data);
for (int i : data) {
System.out.print(i+",");
}
System.out.println("");
int[] data1 = new int[]{8,4,9,13,11,99,2,1,5,3,6};
dubbleSort1(data1);
for (int i : data1) {
System.out.print(i+",");
}
}
}

选择排序:

思想:首先找到数组中最小的那个元素,其次,将它和第一个元素交换。接下来找第二小和第二个交换。运行时间和输入无关,数据移动最少

特点:数据移动最少,不稳定,适合排序数较少时使用

package cn.guangboyuan;

import java.util.Arrays;

/**
* @author Red Ants
* 微信公众号:程序员之路
* 选择排序
*/
public class SelectionSort { public static int[] selectionSort(int[] ints){
int temp;
int runNum = 0;
for (int i = 0; i < ints.length; i++) {
for (int j = i+1; j < ints.length; j++) {
if(ints[j]<ints[i]){
temp = ints[i];
ints[i] = ints[j];
ints[j] = temp;
}
runNum++;
}
}
System.out.println(String.format("运行次数:%d", runNum));
return ints;
} public static void main(String[] args) {
int[] ints = new int[]{8,4,9,13,11,99,2,1,5,3,6};
selectionSort(ints);
System.out.println(Arrays.toString(ints));
}
}

插入排序:

思想:首先数组前两个数比较排序,然后第三个数和前两个数进行排序以此类推

特点:稳定,适合大部分已排序时较好

package cn.guangboyuan;

import java.util.Arrays;

/**
* @author Red Ants
* 微信公众号:程序员之路
* 插入排序
*/
public class InsertionSort { public static int[] insertionSort(int[] ints) {
int target = 0;
int runNum = 0;
for (int i = 1; i < ints.length; i++) {
int j = i;
target = ints[i];
while (j > 0 && target < ints[j-1]) {
ints[j] = ints[j-1];
j--;
runNum++;
}
ints[j] = target;
}
System.out.println(String.format("运行次数:%d", runNum));
return ints;
} public static void main(String[] args) {
int[] ints = new int[]{8,4,9,13,11,99,2,1,5,3,6};
System.out.println(Arrays.toString(insertionSort(ints)));
}
}

Java实现冒泡排序,选择排序,插入排序的更多相关文章

  1. 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]

    关于冒泡排序,选择排序,插入排序,希尔排序[资料收集]  以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...

  2. python算法(一)基本知识&冒泡排序&选择排序&插入排序

    本节内容: 算法基本知识 冒泡排序 选择排序 插入排序 1. 算法基本知识 1.1 什么是算法? 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 ...

  3. 过三关 Java冒泡排序选择排序插入排序小练习

    材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...

  4. java冒泡排序-选择排序-插入排序-使用API中文文档直接调用函数

    import java.util.Arrays; public class ArrayDemo2_3 { public static void main(String []args) { //---- ...

  5. 数组排序-冒泡排序-选择排序-插入排序-希尔排序-快速排序-Java实现

    这五种排序算法难度依次增加. 冒泡排序: 第一次将数组相邻两个元素依次比较,然后将大的元素往后移,像冒泡一样,最终最大的元素被移到数组的最末尾. 第二次将数组的前n-1个元素取出,然后相邻两个元素依次 ...

  6. 冒泡排序 选择排序 插入排序希尔排序 java

    双向冒泡 package com.huang; public class _014_bubb_sort { int[] b={1,2}; static int a[]={12,4,35,65,43,6 ...

  7. 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现

    之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ...

  8. php基础排序算法 冒泡排序 选择排序 插入排序 归并排序 快速排序

    <?php$arr=array(12,25,56,1,75,13,58,99,22);//冒泡排序function sortnum($arr){    $num=count($arr);    ...

  9. PHP冒泡排序,选择排序,插入排序

    1  冒泡排序是两个元素相互比较,找到最小值,然后冒泡到最后,代码如下:

  10. 算法 排序lowB三人组 冒泡排序 选择排序 插入排序

    参考博客:基于python的七种经典排序算法   [经典排序算法][集锦]     经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...

随机推荐

  1. [Axiom 3D]1.初识Axiom

    1. 简介 The Axiom 3D Rendering Engine is a fully object oriented 3D graphics engine using C# and the . ...

  2. 在GUI程序中使用控制台的两种方法

    win32程序启用控制台(控制台文件名:conout$,conin$,conerr$) //添加控制台,加入在程序构造函数中 AllocConsole(); freopen("conin$& ...

  3. win7 +v Ubuntu 16.04 grub rescue 模式下修复 grub

    前几天整理了下电脑的分区,合并并删除一些分区,结果导致 grub 被破坏了,Ubuntu进不去了,启动后直接进入了 rescure 模式.后来又折腾了下,终于修复好了,现总结一下. 先说一下我的系统环 ...

  4. 爬虫概要及web微信请求分析

    一.爬虫概要 1.网络爬虫是什么 百度百科:网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常 ...

  5. Java笔记 #01# 最近遇到的几个Throwable

    续<Java入门第三季>第一章 异常与异常处理. 1.StackOverflowError 第一次碰到这个 Error 居然有点小激动,原因当然是因为它叫 StackOverflow Q: ...

  6. bzoj1619 / P2919 [USACO08NOV]守护农场Guarding the Farm

    P2919 [USACO08NOV]守护农场Guarding the Farm 相似题:P3456 [POI2007]GRZ-Ridges and Valleys 按海拔是否相同分块 每次bfs海拔相 ...

  7. CSS3 页面中展示邮箱列表点击弹出发送邮件界面

    CSS3 页面中展示邮箱列表点击弹出发送邮件界面 代码: <!DOCTYPE html> <html> <head> <meta charset=" ...

  8. Windows Server 2008 R2 web服务器发布在线系统时遇到的问题

    1  HTTP 错误 404.2 - Not Found,由于 Web  服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面(如下图) 打开 Internet 信息服务(IIS) ...

  9. linux及安全《Linux内核设计与实现》第一章——20135227黄晓妍

    <linux内核设计与实现>第一章 第一章Linux内核简介: 1.3操作系统和内核简介 操作系统:系统包含了操作系统和所有运行在它之上的应用程序.操作系统是指整个在系统中负责完成最基本功 ...

  10. linux内核分析第六周-分析Linux内核创建一个新进程的过程

    Linux内核对进程管理是操作系统的重要任务之一. 此次实验就是了解内核创建一个新进程的大致过程. 为了简单,使用fork再用户态创建一个进程.代码如下: 下面是准备工作​​​ cd LinuxKer ...