一、选择排序

1、原始数组

2、遍历数组找到最小值索引,并将最小值索引与当前遍历索引位置互换

3、确定最小位置值,进行下一次遍历

4、java代码实现

/**
* author:sam
* date:2018/1/26 14:11
* describe:选择排序
*/
public void selectSort(int[] arr){
for (int i = 0; i < arr.length; i++) {
int minIndex = i;
for (int j = i; j < arr.length; j++) {
if(arr[minIndex] > arr[j])
minIndex = j;
}
SortUtils.swap(arr,minIndex,i);
}
} 二、插入排序   扑克牌整理牌型时思想,对于有序数组效率非常高。

1、以[0]位置数据为基点依次遍历后续数据

2、后续数据依次与当前数据进行比较,并将数据插入到合适位置

3、进行下依次插入

4、java代码实现

/**
* author:sam
* date:2018/3/7 10:49
* describe:插入排序
*/
@Override
public void insertSort(int[] arr) { for (int i = 1; i < arr.length; i++) {
for (int j = i; j > 0 && arr[j] < arr[j-1]; j--){
SortUtils.swap(arr, j, j - 1);
}
}
}

5、插入排序优化

/**
* author:sam
* date:2018/3/7 12:21
* describe:插入排序优化
*/
@Override
public void optimizeInsertSort(int[] arr) { for (int i = 1; i < arr.length; i++) {
int e = arr[i];
int index = i;
for (int j = i; j > 0 && arr[j-1] > e; j--) {
arr[j] = arr[j - 1];
index = j - 1;
}
arr[index] = e;
} }

三、冒泡排序

1、冒泡排序
/**
* author:sam
* date:2018/3/7 14:37
* describe:冒泡排序
*/
public void bubbleSort(int[] arr){ for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length - i -1; j++) {
if(arr[j] > arr[j+1]){
SortUtils.swap(arr,j,j+1);
}
}
}
} 2、冒泡排序优化
/**
* author:sam
* date:2018/3/7 14:49
* describe:优化冒泡排序
*/
@Override
public void optimizeBubbleSort(int[] arr){
/*boolean flag;
int n = arr.length;
do{
flag = false;
for (int i = 1; i < n; i++) {
int j;
if(arr[i] < arr[j = i-1]) {
SortUtils.swap(arr, i, j);
flag = true;
}
}
n--;
}while(flag);*/
boolean flag;
int n = arr.length;
do{
flag = false;
int j;
for (int i = 0; i < n - 1; i++) {
if(arr[i] > arr[j = i + 1]){
SortUtils.swap(arr,i,j);
flag = true;
}
}
n--;
}while(flag);
}

四、shell排序

  

(1)常见O(n^2)排序算法解析的更多相关文章

  1. python常见排序算法解析

    python——常见排序算法解析   算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...

  2. python——常见排序算法解析

    算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法,分别是冒泡排序,插入排序,选择排序, ...

  3. Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等

    本文就是介绍一些常见的排序算法.排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序.选择排序.冒泡排 ...

  4. 【转载】常见十大经典排序算法及C语言实现【附动图图解】

    原文链接:https://www.cnblogs.com/onepixel/p/7674659.html 注意: 原文中的算法实现都是基于JS,本文全部修改为C实现,并且统一排序接口,另外增加了一些描 ...

  5. DualPivotQuicksort 排序算法解析

    DualPivotQuicksort是JDK1.7开始的采用的快速排序算法. 一般的快速排序采用一个枢轴来把一个数组划分成两半,然后递归之. 大量经验数据表面,采用两个枢轴来划分成3份的算法更高效,这 ...

  6. [算法] 常见排序算法总结(C语言版)

    常见排序算法总结 本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序.插入排序.归并排序.希尔排序.快速排序等.算法性能比较如下图所示: 1 冒泡排序 基本原 ...

  7. Java几种常见的排序算法

    一.所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面. ...

  8. Java的几种常见排序算法

    一.所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法.排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面. ...

  9. 各种排序算法的总结、比较与Java实现

    1 快速排序(QuickSort) 快速排序是一个就地排序,分而治之,大规模递归的算法.从本质上来说,它是归并排序的就地版本.快速排序可以由下面四步组成. (1) 如果不多于1个数据,直接返回.(2) ...

随机推荐

  1. 关于awk的多文件处理

    关于awk的多文件处理: awk的数据输入有两个来源,标准输入和文件,后一种方式支持多个文件,如1.shell的Pathname Expansion方式:awk '{...}' *.txt # *.t ...

  2. MySQL基于binlog主从复制

    MySQL复制介绍 默认情况 下复制是异步进行的,从库也不需要一直连接到主库来同步数据 MySQL复制的数据粒度可以是主实例上所有的数据库,也可以是指定的一个或多个数据库 ,也可以是一个数据库里的指定 ...

  3. 4.Handler之CoreHandler编写

    4.Handler之CoreHandler编写 如图右上角所示,Ray中有两类Handler(SubHandler和PartSubHandler),在使用中,SubHandler派生Actor的Cor ...

  4. Func常用模块及API

    Func常用模块及API Func提供了非常丰富的功能模块,包括: CommandModule(执行命令) CopyFileModule(拷贝文件) CpuModule(CPU信息) DiskModu ...

  5. 【转载】C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte

    C#.NET WebApi返回各种类型(图片/json数据/字符串),.net图片转二进制流或byte 转载:http://www.itdos.com/Mvc/20150302/0741255.htm ...

  6. R语言-探索多个变量

    目的: 通过探索文件pseudo_facebook.tsv数据来学会多个变量的分析流程 通过探索diamonds数据集来探索多个变量 通过酸奶数据集探索多变量数据 知识点: 散点图 dplyr汇总数据 ...

  7. 新人如何运行Faster RCNN的tensorflow代码

    0.目的 刚刚学习faster rcnn目标检测算法,在尝试跑通github上面Xinlei Chen的tensorflow版本的faster rcnn代码时候遇到很多问题(我真是太菜),代码地址如下 ...

  8. linux下安装phpunit简单方法

    现在安装phpunit相当简单,只需要下载phar压缩格式的phpunit文件,给个执行权限,就可以执行了 以下是一段官方安装文档 wget https://phar.phpunit.de/phpun ...

  9. 【Tomcat】Tomcat的使用

    第一章 JDK的安装 1.1  windows下安装 1.1.1  配置环境变量 安装完成后,还要进行 Java 环境的配置,才能正常使用,步骤如下: (1)在我的电脑点击右键——〉选择属性, (2) ...

  10. BZOJ 1367: [Baltic2004]sequence [可并堆 中位数]

    1367: [Baltic2004]sequence Time Limit: 20 Sec  Memory Limit: 64 MBSubmit: 1111  Solved: 439[Submit][ ...