几种简单的排序算法(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]
转载于:https://www.cnblogs.com/hdwang/p/6323490.html
几种简单的排序算法(JAVA)相关推荐
- C语言、Java学习笔记(三)---几种简单的排序算法
假期已经过了一半,整个人都变得颓废了许多.今天没有出去玩,就学了几个简单的排序算法,以求安慰自己,好歹也是在假期里学习过了.(瘫- C 这里一次性给出三种排序方法的代码,分别是冒泡排序,选择排序和归并 ...
- 简单选择排序算法 (JAVA)
算法实现思想: 选择排序一共排序了n-1轮. for (int i = 0; i < arr.length - 1; i++) {} 定义变量min来记录每轮中需要比较序列中的最小数,变量min ...
- java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......
先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...
- C#开发技术点说明-四种简单的排序算法,AJAX,Http Module,Http 请求处理流
我觉得如果想成为一名优秀的开发者,不仅要积极学习时下流行的新技术,比如WCF.Asp.Net MVC.AJAX等,熟练应用一些已经比较成熟的技术,比如Asp.Net.WinForm.还应该有着牢固的计 ...
- 【Leetcode】几种简单的排序算法
冒泡排序 冒泡排序(Bubble Sort) 最为简单的一种排序,通过重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序.因一个 ...
- java基础排序_Java排序算法-Java入门|Java基础课程
1. 课程目标排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2 ...
- 视觉直观感受 7 种常用的排序算法
2019独角兽企业重金招聘Python工程师标准>>> 1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较 ...
- 7 种常用的排序算法直观感受
1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序 ...
- 视觉直观感受7种常用的排序算法
1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...
最新文章
- yolov4源码_YOLOv4特征提取网络——CSPDarkNet结构解析及PyTorch实现
- 代码示例_网络编程_select
- WIN2008系统的IIS7.0配置REWRITE伪静态环境
- python爬虫吧-python爬虫-贴吧
- 来了,单片机最强科普总结!
- influxdb tsm文件_Influxdb中的Compaction操作
- python爬虫开发 从入门到实战_python网络爬虫从入门到实战开发
- C/C++开发者必不可少的15款编译器+IDE
- vim 中代码的折叠和打开
- 零散知识点总结(1) Gradle 使用配置总结
- asp.net html5 input提交,Render ASP.NET TextBox as HTML5 Input type “Number
- 【数据结构】图文例题详解单调栈与单调队列
- 从零开始实现一个简易的Java MVC框架(四)--实现AOP
- 人工智能 2 级就来越塔来杀我,论文已被NeurIPS收录!
- 人人网发布QQ劝架补丁 同时兼容QQ及360
- GTK之信号和回调函数
- 深度优先搜索(c++)
- 音频降噪的软件有哪些?快来看看这些软件
- python爱心表白_python爱心表白 每天都是浪漫七夕!
- 分享公众号预约系统怎么做_微信公众号制作线上预约系统步骤
热门文章
- 使用Github Action发布函数到阿里云serverless平台
- createinstance.java,weex android 0.17.0 createInstance fail
- .NET 之路 | 007 详解 .NET 程序集
- 游戏建模、纹理、后期,手把手教你制作《向日葵公主》
- 建立海盗的天堂:盗贼之海的AI(一)
- J2ME手机游戏引擎程序结构简述
- 数组声明为public final static缺陷
- 消费提示:警惕近期淘宝上大量超低价白菜包邮产品
- 2021年,脸皮“厚“点儿
- mysql中tinyint、smallint、int、bigint的区别介绍