几种排序算法(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)相关推荐

  1. C语言、Java学习笔记(三)---几种简单的排序算法

    假期已经过了一半,整个人都变得颓废了许多.今天没有出去玩,就学了几个简单的排序算法,以求安慰自己,好歹也是在假期里学习过了.(瘫- C 这里一次性给出三种排序方法的代码,分别是冒泡排序,选择排序和归并 ...

  2. 简单选择排序算法 (JAVA)

    算法实现思想: 选择排序一共排序了n-1轮. for (int i = 0; i < arr.length - 1; i++) {} 定义变量min来记录每轮中需要比较序列中的最小数,变量min ...

  3. java 快速排序算法简单_排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序......

    先推荐一篇关于排序算法的文章:http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章,但测得的结果似乎 ...

  4. C#开发技术点说明-四种简单的排序算法,AJAX,Http Module,Http 请求处理流

    我觉得如果想成为一名优秀的开发者,不仅要积极学习时下流行的新技术,比如WCF.Asp.Net MVC.AJAX等,熟练应用一些已经比较成熟的技术,比如Asp.Net.WinForm.还应该有着牢固的计 ...

  5. 【Leetcode】几种简单的排序算法

    冒泡排序 冒泡排序(Bubble Sort) 最为简单的一种排序,通过重复走完数组的所有元素,通过打擂台的方式两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序.因一个 ...

  6. java基础排序_Java排序算法-Java入门|Java基础课程

    1. 课程目标排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2 ...

  7. 视觉直观感受 7 种常用的排序算法

    2019独角兽企业重金招聘Python工程师标准>>> 1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较 ...

  8. 7 种常用的排序算法直观感受

    1. 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序 ...

  9. 视觉直观感受7种常用的排序算法

    1 快速排序 介绍: 快速排序是由东尼·霍尔所发展的一种排序算法.在平均状况下,排序 n 个项目要Ο(n log n)次比较.在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见.事实上,快速排序通 ...

最新文章

  1. yolov4源码_YOLOv4特征提取网络——CSPDarkNet结构解析及PyTorch实现
  2. 代码示例_网络编程_select
  3. WIN2008系统的IIS7.0配置REWRITE伪静态环境
  4. python爬虫吧-python爬虫-贴吧
  5. 来了,单片机最强科普总结!
  6. influxdb tsm文件_Influxdb中的Compaction操作
  7. python爬虫开发 从入门到实战_python网络爬虫从入门到实战开发
  8. C/C++开发者必不可少的15款编译器+IDE
  9. vim 中代码的折叠和打开
  10. 零散知识点总结(1) Gradle 使用配置总结
  11. asp.net html5 input提交,Render ASP.NET TextBox as HTML5 Input type “Number
  12. 【数据结构】图文例题详解单调栈与单调队列
  13. 从零开始实现一个简易的Java MVC框架(四)--实现AOP
  14. 人工智能 2 级就来越塔来杀我,论文已被NeurIPS收录!
  15. 人人网发布QQ劝架补丁 同时兼容QQ及360
  16. GTK之信号和回调函数
  17. 深度优先搜索(c++)
  18. 音频降噪的软件有哪些?快来看看这些软件
  19. python爱心表白_python爱心表白 每天都是浪漫七夕!
  20. 分享公众号预约系统怎么做_微信公众号制作线上预约系统步骤

热门文章

  1. 使用Github Action发布函数到阿里云serverless平台
  2. createinstance.java,weex android 0.17.0 createInstance fail
  3. .NET 之路 | 007 详解 .NET 程序集
  4. 游戏建模、纹理、后期,手把手教你制作《向日葵公主》
  5. 建立海盗的天堂:盗贼之海的AI(一)
  6. J2ME手机游戏引擎程序结构简述
  7. 数组声明为public final static缺陷
  8. 消费提示:警惕近期淘宝上大量超低价白菜包邮产品
  9. 2021年,脸皮“厚“点儿
  10. mysql中tinyint、smallint、int、bigint的区别介绍