几种简单的排序算法(JAVA)
几种排序算法(JAVA)
一、代码
package com.hdwang; import java.util.Arrays; /**
* Created by admin on 2017/1/20.
*/
public class Sort { /**
* 冒泡排序(最小数冒泡)
* @param array 数组
*/
public void bubbleSort(int[] array){
for(int i=0;i< array.length-1;i++){ //比多少次
for(int j= i+1;j<array.length;j++){ //每次循环,将最小数提前
if(array[i]>array[j]){ //小数冒泡
int tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
} /**
* 选择排序(选择最小值置前,较冒泡排序空间占用多,速度快(少了交换))
* @param array 数组
*/
public void selectSort(int[] array){
for(int i=0;i<array.length-1;i++){
int minIndex = i;
for(int j=i+1;j<array.length;j++){
if(array[j]<array[minIndex]){
minIndex = j; //最小值位置
}
}
//交换最小值与第i位的值
if(minIndex != i){
int tmp = array[minIndex]; //最小值
array[minIndex] = array[i];
array[i] = tmp;
}
}
} /**
* 插入排序(大数后移,小数插入前面,理论上比选择排序空间大,速度快)
* @param array 数组
*/
public void insertSort(int[] array){
for(int i=1;i< array.length;i++){
int tmp = array[i]; //暂存i位的元素,空出来
int j = i;
for(;j > 0 && tmp < array[j-1]; j--){ //前面的大数移到后面来
array[j] = array[j-1];
}
array[j] = tmp; //tmp插入准确位置
}
} /**
* 快速排序(理论上比插入排序空间占用大,排序速度更快)
* @param array 数组
* @param lowIndex 低位索引
* @param highIndex 高位索引
*/
public void quickSort(int[] array,int lowIndex,int highIndex){
if(lowIndex >= highIndex){
return; //退出递归
}
int base = array[lowIndex]; //基准数(小的放其左边,大的放其右边)
int low = lowIndex; //副本
int high = highIndex; //副本
while(low<high){
while(low<high){ //从后面往前找到一个比base小的数,放到前面去(low的位置上去)
if(array[high] < base){
array[low] = array[high];
low++;
break;
}
high--;
}
while(low<high){ // 从前面往后找到一个大于或等于base的数,放到后面去(high的位置上去)
if(array[low] >= base){
array[high] = array[low];
high--;
break;
}
low++;
}
}
array[low] = base; //low==high 结束 quickSort(array,lowIndex,low-1); //递归排序前一段
quickSort(array,low+1,highIndex); //递归排序后一段
} public static void main(String[] args) {
int[] array = {2,3,1,6,9,5,4,2};
System.out.println(Arrays.toString(array)); Sort sort = new Sort();
// sort.bubbleSort(array);
// sort.selectSort(array);
// sort.insertSort(array);
sort.quickSort(array,0,array.length-1);
System.out.println(Arrays.toString(array)); }
}
二、输出结果
[2, 3, 1, 6, 9, 5, 4, 2]
[1, 2, 2, 3, 4, 5, 6, 9]
几种简单的排序算法(JAVA)的更多相关文章
- java实现几种简单的排序算法
public class SimpleAri { public static void main(String[] args) { int[] t = {11, 21, 22, 1, 6, 10, 3 ...
- 四种简单的排序算法的php实现
无聊,用php写几个排序算法,算法介绍请移步这里,这里使用php实现了几个简单的,如下 //选择排序 function selection_sort($arr){ $len = count($arr) ...
- 几种常见的排序算法Java实现总结
public class MySort { final int MAX=20; int num[]=new int[MAX]; { System.out.print("生成的随机数组是:&q ...
- Python实现几种简单的排序算法
一.冒泡排序 概念:为一个无序的列表排成有序的 实现过程描述:(升序) 1.比较相邻的元素,如果第一个比第二个大,就交换他们的位置 2.对每一对相邻元素重复1的工作,从开始第一队到最后一对,最后结束的 ...
- 八大排序算法Java实现
本文对常见的排序算法进行了总结. 常见排序算法如下: 直接插入排序 希尔排序 简单选择排序 堆排序 冒泡排序 快速排序 归并排序 基数排序 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排 ...
- python3实现几种常见的排序算法
python3实现几种常见的排序算法 冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要 ...
- java讲讲几种常见的排序算法(二)
java讲讲几种常见的排序算法(二) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 堆排序 思路:构建一个小顶堆,小顶堆就是棵二叉树,他的左右孩子均大于他的根节点( ...
- java讲讲几种常见的排序算法
java讲讲几种常见的排序算法(一) 目录 java讲讲几种常见的排序算法(一) java讲讲几种常见的排序算法(二) 以数组array={6,3,20,8,15,1}为例 冒泡排序 思路:从第0个到 ...
- 8种排序算法 Java实现
冒泡排序 O(n2) 两个数比较大小,较大的数下沉,较小的数冒起来. public static void bubbleSort(int[] a) { //临时变量 int temp; //i是循环次 ...
随机推荐
- Java基础—面向对象
一.什么叫面向对象 万物皆对象(待更正) 二.面向对象三大特征 抽象:把一类对象共同特征进行抽取构造类的过程,包括两种抽象:第一种是数据抽象,也就是对象的属性.第二种是过程抽象,也就是对象的行为 封装 ...
- Python算法基础
一.简介 定义和特征 定义:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制.也就是说,能够对一定规范的输入,在有限时 ...
- 20155211 网络攻防技术 Exp08 Web基础
20155211 网络攻防技术 Exp08 Web基础 实践内容 Web前端HTML,能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. We ...
- 20155302《网络对抗》Exp3 免杀原理与实践
20155302<网络对抗>Exp3 免杀原理与实践 实验要求 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编 ...
- 最简单的iOS网络请求
做iOS开发,说到网络请求,大家可能都不约而同的提到AFN,可以说大家的网络请求都是用AFN封装而成,AFN的强大易用的确很好. 但是版本升级就会出现一些问题,所以就自己基于iOS原生封装了一个网络请 ...
- numpy 初识(三)
基本运算 exp: e sqrt:开放 floor:向下取整 ravel:矩阵拉成一个向 T:转置(行和列变换) 改变形状: resize: 更改其形状(返回值为None)a.resize(6,2) ...
- Python初学者随笔Week1
Python从入门到放弃 本文主要是描述的是作为初学者对python学习的过程与经历分享,包括一些历程的分享与重要的时间节点记录,对于python学习的笔记与心得. 如果你也是初学者,我们可以一起学习 ...
- Jenkins Maven安装设置
Jenkins Maven安装设置 如果没有学习过 Maven 的朋友,可以先了解 Maven教程,然后再进一步学习本教程文章. 第1步:下载和设置Maven Maven的官方网站就是Apache M ...
- beef局域网内模拟攻击
0x0环境 主机A win10:10.51.20.60(wifi) 主机A中的虚拟机kali(攻击者):192.168.110.129(NAT) 主机A中的虚拟机win2003(受害者):192.16 ...
- Test Cases
对于mode1 1 路径下一个空文件夹 结果:生成一个空的txt 2路径下一个文件夹内包含一个txt内容为abd(最基本的一个单词) 3路径下一个空文件夹一个txt,txt内容为以不同符号 ...