/**
* 排序方法整理
* @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 - 冒泡排序、选择排序、插入排序、快速排序的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序

    C# 插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序 以下列出了数据结构与算法的八种基本排序:插入排序 冒泡排序 选择排序 高速排序 堆排序 归并排序 基数排序 希尔排序 ...

  7. 归并排序 & 计数排序 & 基数排序 & 冒泡排序 & 选择排序 ----> 内部排序性能比较

    2.3 归并排序 接口定义: int merge(void* data, int esize, int lpos, int dpos, int rpos, int (*compare)(const v ...

  8. JAVA简单选择排序算法原理及实现

    简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: ...

  9. C语言实现 冒泡排序 选择排序 希尔排序

    // 冒泡排序 // 选择排序 // 希尔排序 // 快速排序 // 递归排序 // 堆排序 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h& ...

随机推荐

  1. Spoken English Practice(You know we can't afford that. How do other people do it? Other people make more twenty-four thousand a year. )

    绿色:连读:                  红色:略读:               蓝色:浊化:               橙色:弱读     下划线_为浊化 口语蜕变(2017/7/9) 英 ...

  2. .Vue.js大全

    Vue起步 1.下载核心库vue.js bower info vue npm init --yes cnpm install vue --save vue2.0和1.0相比,最大的变化就是引入了Vir ...

  3. java 链表常见题目

    如何判断单链表是否存在环 方法一.穷举遍历方法一:首先从头节点开始,依次遍历单链表的每一个节点.每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用新节点ID和此节点之前所有节点ID依次作比 ...

  4. 协程+IO切换实现并发

    from gevent import monkey # 以后代码中遇到IO都会自动执行greenlet的switch进行切换 monkey.patch_all() import requests im ...

  5. *.hbm.xml映射文件的元素及属性

    1. 每个持久化对象都需要提供一个以类名命名的映射文件,映射文件需要放在和po类同一目录下. 2. 如下是wefepo的映射文件: <hibernate-mapping> <clas ...

  6. 吴超老师课程--Hive的介绍和安装

    1.Hive1.1在hadoop生态圈中属于数据仓库的角色.他能够管理hadoop中的数据,同时可以查询hadoop中的数据.  本质上讲,hive是一个SQL解析引擎.Hive可以把SQL查询转换为 ...

  7. python16_day09【Select多路复用】

    一.select多路复用 句柄列表11, 句柄列表22, 句柄列表33 = select.select(句柄序列1, 句柄序列2, 句柄序列3, 超时时间) 参数: 可接受四个参数(前三个必须) 返回 ...

  8. go——函数

    1.定义 函数是结构化编程的最小单元模式.它将复杂的算法过程分解为若干个较小任务,隐藏相关细节,使程序结构更加清晰,易于维护.函数被设计成相对独立,通过接收输入参数完成一段算法指令,输出或存储相关结果 ...

  9. Delphi 正则表达式语法(5): 边界

    Delphi 正则表达式语法(5): 边界 // \b 单词边界 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg ...

  10. (转)CTO的烦恼:为啥差距就这么大呢?

    话说胖哒是一只CTO,近来遇到了一些小烦恼… 胖哒表示这么多问题想想就头大啊! 一直听说用Docker解决问题不错,于是两个月前,胖哒不远万里来到DockerCon 16,打算向国外的Docker先行 ...