排序方法整理Java - 冒泡排序、选择排序、插入排序、快速排序
/**
* 排序方法整理
* @author zhyea
*
*/
public class Sort {
/**
* 冒泡排序,从小到大。
* 冒泡排序是比较相邻的两个元素,若顺序错误,则执行交换。循环走访序列直到不需要比较。稳定排序。
* @param arr
* 待排序的数组
*/
public static void bubbleSort(int[] arr){
int tmp = 0;
for(int k=0; k<arr.length; k++){
for(int i=1; i<arr.length; i++){
if(arr[i-1] > arr[i] ){
tmp = arr[i];
arr[i] = arr[i-1];
arr[i-1] = tmp;
}
}
}
} /**
* 选择排序,从小到大
* 每次从待排序序列中取出最大(或最小)的一个元素,放入已排好序的序列后面。不稳定排序。
* @param arr
* 待排序数组
*/
public static void selectSort(int[] arr){
int tmp = 0;
for(int k=0; k<arr.length; k++){
for(int i=k+1; i<arr.length; i++){
if(arr[i] < arr[k]){
tmp = arr[i];
arr[i] = arr[k];
arr[k] = tmp;
}
}
}
} /**
* 插入排序,从小到大
* 从待排序序列中取出一个,插入已排好序的序列的适当位置,如是重复。稳定排序。
* @param arr
* 待排序数组
*
*/
public static void insertSort(int[] arr){
int tmp = 0;
for(int k=1; k<arr.length; k++){
for(int i=k; i>0; i--){
if(arr[i]<arr[i-1]){
tmp = arr[i];
arr[i] = arr[i-1];
arr[i-1] = tmp;
}
}
}
} /**
* 快速排序,从小到大
* 通过一次排序,将待排序序列分成两部分,其中一部分中的值比另一部分都小;递归如上步骤,可完成排序。不稳定排序
* 可以通过减少交换优化快速排序,不列出了
* @param arr
*/
public static void quickSort(int[] arr, int low, int high){ int l = low;
int h = high; int tmp = 0;
int key = arr[0];
while(h>l){
while(h>l && arr[h]>=key){
h--;
}
if(h>l){
tmp = arr[l];
arr[l] = arr[h];
arr[h] = tmp;
l++;
}else{
break;
} while(h>l && arr[l]<=key){
l++;
}
if(h!=l){
tmp = arr[h];
arr[h] = arr[l];
arr[l] = tmp;
h--;
}else{
break;
}
} if(l>low)quickSort(arr, 0, h-1);
if(h<high)quickSort(arr, l+1, high);
} public static void main(String[] args){
int[] arr = {8, 5, 4, 6, 9, 7, 5, 6};
System.out.println("冒泡排序" );
bubbleSort(arr);
printArr(arr);
} /**
* 循序输出数组中的每个元素
* @param arr
* 待输出数组
*/
private static void printArr(int[] arr){
for(int i=0; i<arr.length; i++){
System.out.print(arr[i] + ", ");
}
System.out.print("\n");
}
}
排序方法整理Java - 冒泡排序、选择排序、插入排序、快速排序的更多相关文章
- java冒泡排序-选择排序-插入排序-使用API中文文档直接调用函数
import java.util.Arrays; public class ArrayDemo2_3 { public static void main(String []args) { //---- ...
- 过三关 Java冒泡排序选择排序插入排序小练习
材料:猴子排序,按照身高来从小到大来排序. 第一关: 老猴子带领小猴子队伍按大小逐一比较,交换,开始高矮排列队伍.(冒泡排序) 第二关: 太慢了,给第一关增加难度,进行选择排序 第三关: 最后,尝试选 ...
- 算法 排序lowB三人组 冒泡排序 选择排序 插入排序
参考博客:基于python的七种经典排序算法 [经典排序算法][集锦] 经典排序算法及python实现 首先明确,算法的实质 是 列表排序.具体就是操作的列表,将无序列表变成有序列表! 一 ...
- python算法(一)基本知识&冒泡排序&选择排序&插入排序
本节内容: 算法基本知识 冒泡排序 选择排序 插入排序 1. 算法基本知识 1.1 什么是算法? 算法(algorithm):就是定义良好的计算过程,他取一个或一组的值为输入,并产生出一个或一组值作为 ...
- 学习C#之旅 冒泡排序,选择排序,插入排序,希尔排序[资料收集]
关于冒泡排序,选择排序,插入排序,希尔排序[资料收集] 以下资料来源与网络 冒泡排序:从后到前(或者从前到后)相邻的两个两两进行比较,不满足要求就位置进行交换,一轮下来选择出一个最小(或最大)的放到 ...
- C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序
C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序 以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序 ...
- 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较
2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...
- JAVA简单选择排序算法原理及实现
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...
- C语言实现 冒泡排序 选择排序 希尔排序
// 冒泡排序 // 选择排序 // 希尔排序 // 快速排序 // 递归排序 // 堆排序 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h& ...
随机推荐
- 160815、mysql主从复制/读写分离
mysql主从复制主服务器IP:192.168.99.10从服务器IP:192.168.99.20(一)安装mysql(主从服务器操作相同)yum -y install gcc gcc-c++ ncu ...
- Less-css扩展多样式
//扩展Extend Use Method:以在study上扩展多个的样式为例 //Share style 1 .style1{ width:200px; height:15px; color:#ff ...
- 微软企业库验证 Validations
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...
- Linux入门之运维(1) 系统监控 vmstat top
vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.这个命令是我查看Linux/Unix最 ...
- Docker Libnetwork Bridge插件实现代码分析----创建网络部分
// drivers/bridge/bridge.go // Create a new network using bridge plugin 1.func (d *driver) CreateNet ...
- IOS研究之IOS7四种后台机制
IOS 7中,实际上APP拥有四种后台模式.不管是哪一种后台机制,均须要利用苹果给予的对应后台接口实现.IOS7系统中,开发人员能够灵活利用多种后台接口(API)实现更加智能的应用操作. 对获取 ...
- Keras之序贯(Sequential)模型
序贯模型(Sequential) 序贯模型是多个网络层的线性堆叠. 可以通过向Sequential模型传递一个layer的list来构造该模型: from Keras.models import Se ...
- go——类型的本质
在声明一个新类型之后,声明一个该类型的方法之前,需要先回答一个问题:这个类型的本质是什么. 如果给这个类型增加或删除某个值,是要创建一个新值,还是要更改当前的值? 如果是要创建一个新值,该类型的方法就 ...
- go——反射
反射(reflect)让我们能在运行期探知对象地类型信息和内存结构,这从一定程度上弥补了静态语言在动态行为上地不足.和C数据结构一样,Go对象头部并没有类型指针,通过其自身是无法在运行期获知任何类型相 ...
- html-3,table 表格标签 tr th td caption thead tbody tfoot 的简单使用
<!-- table border='1' style="border-collapse:collapse;" border 表格的像素宽度 border-collapse: ...