public static void bubble_sort(int[] arry){int n = arry.length;for (int i = 0; i <n ; i++) {for (int j = 1; j <n ; j++) {if(arry[j-1]>arry[j]){int tmp = arry[j];arry[j] = arry[j-1];arry[j-1] = tmp;}}System.out.print("第"+(i+1)+"躺排序: ");printArray(arry);System.out.println();}}
第1躺排序: 1 3   1   4   5   2   6   9
第2躺排序: 1    1   3   4   2   5   6   9
第3躺排序: 1    1   3   2   4   5   6   9
第4躺排序: 1    1   2   3   4   5   6   9
第5躺排序: 1    1   2   3   4   5   6   9
第6躺排序: 1    1   2   3   4   5   6   9
第7躺排序: 1    1   2   3   4   5   6   9
第8躺排序: 1    1   2   3   4   5   6   9
    public static void select_sort(int[] array){int n = array.length;for (int i = 0; i <n ; i++) {int minIndex = i;//每一趟选出一个最小的与for (int j = i+1; j <n ; j++) {if(array[minIndex]>array[j]){minIndex = j;}}int tmp = array[minIndex];array[minIndex] = array[i];array[i] = tmp;System.out.print("第"+(i+1)+"躺排序: ");printArray(array);System.out.println();}}
第1躺排序: 1 3   4   1   5   9   2   6
第2躺排序: 1    1   4   3   5   9   2   6
第3躺排序: 1    1   2   3   5   9   4   6
第4躺排序: 1    1   2   3   5   9   4   6
第5躺排序: 1    1   2   3   4   9   5   6
第6躺排序: 1    1   2   3   4   5   9   6
第7躺排序: 1    1   2   3   4   5   6   9
第8躺排序: 1    1   2   3   4   5   6   9
 public static void insert_sort(int[] array){int n = array.length;for (int i = 1; i <n ; i++) {if(array[i]<array[i-1]){int tmp = array[i];int index = i; //待插入的下标for (int j = i-1; j >=0 ; j--) {if(array[j]>tmp){array[j+1] = array[j];index = j;}else {break;}}array[index] = tmp;}System.out.print("第"+i+"躺排序: ");printArray(array);System.out.println();}}
第1躺排序: 1 3   4   1   5   9   2   6
第2躺排序: 1    3   4   1   5   9   2   6
第3躺排序: 1    1   3   4   5   9   2   6
第4躺排序: 1    1   3   4   5   9   2   6
第5躺排序: 1    1   3   4   5   9   2   6
第6躺排序: 1    1   2   3   4   5   9   6
第7躺排序: 1    1   2   3   4   5   6   9
public static void shell_sort(int[] array){int n = array.length;int gap = n/2;  // 初始步长while(gap > 0){for (int i = gap; i <n ; i++) {int tmp = array[i];int j = i;while( j >= gap && array[j-gap] > tmp){array[j] = array[j-gap];j = j - gap;}array[j] = tmp;}System.out.print("步长为"+gap+"的排序: ");printArray(array);System.out.println();gap = gap/2; //重新设置步长}}
步长为4的排序: 3   1   2   1   5   9   4   6
步长为2的排序: 2  1   3   1   4   6   5   9
步长为1的排序: 1  1   2   3   4   5   6   9
public static int[] merge_sort(int[] a,int low,int high){int mid = (low+high)/2;System.out.print("mid为"+mid+"的排序: ");printArray(a);System.out.println();if(low<high){merge_sort(a,low,mid);merge_sort(a,mid+1,high);//左右归并merge(a,low,mid,high);}return a;}public static void merge(int[] a, int low, int mid, int high) {int[] temp = new int[high-low+1];int i= low;int j = mid+1;int k=0;// 把较小的数先移到新数组中while(i<=mid && j<=high){if(a[i]<a[j]){temp[k++] = a[i++];}else{temp[k++] = a[j++];}}// 把左边剩余的数移入数组while(i<=mid){temp[k++] = a[i++];}// 把右边边剩余的数移入数组while(j<=high){temp[k++] = a[j++];}// 把新数组中的数覆盖nums数组for(int x=0;x<temp.length;x++){a[x+low] = temp[x];}}
mid为3的排序: 3  1   4   1   5   9   2   6
mid为1的排序: 3 1   4   1   5   9   2   6
mid为0的排序: 3 1   4   1   5   9   2   6
mid为0的排序: 3 1   4   1   5   9   2   6
mid为1的排序: 3 1   4   1   5   9   2   6
mid为2的排序: 1 3   4   1   5   9   2   6
mid为2的排序: 1 3   4   1   5   9   2   6
mid为3的排序: 1 3   4   1   5   9   2   6
mid为5的排序: 1 1   3   4   5   9   2   6
mid为4的排序: 1 1   3   4   5   9   2   6
mid为4的排序: 1 1   3   4   5   9   2   6
mid为5的排序: 1 1   3   4   5   9   2   6
mid为6的排序: 1 1   3   4   5   9   2   6
mid为6的排序: 1 1   3   4   5   9   2   6
mid为7的排序: 1 1   3   4   5   9   2   6
    public static void quickSort(int[] arr,int low,int high){System.out.print("low="+low+" high="+high+"的排序: ");printArray(arr);System.out.println();int i,j,temp,t;if(low>high){return;}i=low;j=high;//temp就是基准位temp = arr[low];while (i<j) {//先看右边,依次往左递减while (temp<=arr[j]&&i<j) {j--;}//再看左边,依次往右递增while (temp>=arr[i]&&i<j) {i++;}//如果满足条件则交换if (i<j) {t = arr[j];arr[j] = arr[i];arr[i] = t;}}//最后将基准为与i和j相等位置的数字交换arr[low] = arr[i];arr[i] = temp;//递归调用左半数组quickSort(arr, low, j-1);//递归调用右半数组quickSort(arr, j+1, high);}
low=0 high=7的排序: 3 1   4   1   5   9   2   6
low=0 high=2的排序: 1    1   2   3   5   9   4   6
low=0 high=-1的排序: 1   1   2   3   5   9   4   6
low=1 high=2的排序: 1    1   2   3   5   9   4   6
low=1 high=0的排序: 1    1   2   3   5   9   4   6
low=2 high=2的排序: 1    1   2   3   5   9   4   6
low=2 high=1的排序: 1    1   2   3   5   9   4   6
low=3 high=2的排序: 1    1   2   3   5   9   4   6
low=4 high=7的排序: 1    1   2   3   5   9   4   6
low=4 high=4的排序: 1    1   2   3   4   5   9   6
low=4 high=3的排序: 1    1   2   3   4   5   9   6
low=5 high=4的排序: 1    1   2   3   4   5   9   6
low=6 high=7的排序: 1    1   2   3   4   5   9   6
low=6 high=6的排序: 1    1   2   3   4   5   6   9
low=6 high=5的排序: 1    1   2   3   4   5   6   9
low=7 high=6的排序: 1    1   2   3   4   5   6   9
low=8 high=7的排序: 1    1   2   3   4   5   6   9

Java实现常见的排序算法相关推荐

  1. java冒泡排序_Java专题(二):Java中常见的排序算法有哪些?---冒泡排序

    排序相关的的基本概念排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域,即多个数据成员 ...

  2. Java中常见的排序算法代码演示

    package cn.xbz;import java.util.Arrays;/*** 各种排序法的演示* @author xbz**/ public class ArraySort {public ...

  3. java 排序_Java中常见的排序算法有哪些?---选择排序

    排序相关的的基本概念 排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域, 即多个数据 ...

  4. java中queue排序_Java中常见的排序算法有哪些?---选择排序

    排序相关的的基本概念 排序: 将一组杂乱无章的数据按一定的规律顺次排列起来. 数据表( data list): 它是待排序数据对象的有限集合. 排序码(key):通常数据对象有多个属性域, 即多个数据 ...

  5. access两字段同时升序排序_7 天时间,我整理并实现了这 9 种常见的排序算法

    排序算法 回顾 我们前面已经介绍了 3 种最常见的排序算法: java 实现冒泡排序讲解 QuickSort 快速排序到底快在哪里? SelectionSort 选择排序算法详解(java 实现) 然 ...

  6. Java数据结构第一讲-排序算法

    常见数据结构和算法实现(排序/查找/数组/链表/栈/队列/树/递归/海量数据处理/图/位图/Java版数据结构) 数据结构和算法作为程序员的基本功,一定得稳扎稳打的学习,我们常见的框架底层就是各类数据 ...

  7. 七种常见的排序算法总结

    目录 引言 1.什么是排序? 2.排序算法的目的是什么? 3.常见的排序算法有哪些? 一,插入排序 1.基本思想 2.代码实现 3.性能分析 4.测试 二,希尔排序(缩小增量排序) 1.基本思想 2. ...

  8. 【Java】5大排序算法总结(插入排序+希尔排序+选择排序+堆排序+冒泡排序)

    快速导航: 1. 稳定性 2 . 插入排序 3. 希尔排序 4. 选择排序 5. 堆排序 6 冒泡排序 1. 稳定性 两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法 ...

  9. PHP面试题:请写出常见的排序算法,并用PHP实现冒泡排序,将数组$a = array()按照从小到大的方式进行排序。

    常见的排序算法: 冒泡排序法.快速排序法.简单选择排序法.堆排序法.直接插入排序法.希尔排序法.合并排序法. 冒泡排序法的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键 ...

  10. python常用算法有哪些_python常见的排序算法有哪些?

    大家都知道,关于python的算法有很多,其中最为复杂的就是python的排序算法,因为它并不是单一的,而是复杂的,关于排序算法就有好几种不同的方式,大家可以根据以下内容,结合自己的项目需求,选择一个 ...

最新文章

  1. 夜宵虽好,可不要贪“杯”哦
  2. windows下expdp自动备份脚本
  3. 通过Spring Social推特StackExchange –第1部分
  4. Python面向对象的基本实现
  5. linux eth0 proxy arp,在interface vlan下敲no ip proxy-arp什么意思
  6. 在线火星文转简体中文工具
  7. 单元测试、黑盒测试、白盒测试
  8. 股票大作手杰西·利弗莫尔语录集锦
  9. 终极文件/文件夹隐藏方案大全
  10. hbiuder运行php_hbuilderx中运行php图文说明
  11. C# 正态分布图 标准偏差 STDEV 概率密度函数 NORM.DIST
  12. 颜色空间RGB与TSL的转换
  13. 联想Y470 非虚拟机安装苹果Mac OS X Mavericks 10.9.1教程详解(文字+图片),通俗易懂亲自动手——序列二之镜像写入,引导建立
  14. iOS LBS地图服务--高德地图使用大全
  15. c语言程序设计吉林大学康辉目录,[吉林大学康辉] 经典C语言程序设计视频教程 51讲...
  16. 英语学习-综合英语(1)
  17. 电脑游戏灌输的70个山寨逻辑
  18. linux查找grep过滤错误信息,Linux 输出过滤器:grep 命令
  19. 在计算机网络中wm表示什么网,网络基础知识
  20. iOS 加载、滑动翻阅大量图片解决方案详解

热门文章

  1. C# FAQ: const和static readonly有什么区别?
  2. HTTP、SSL/TSL、HTTPS、TCP、UDP
  3. jdk list接口源码解析
  4. Python高性能计算库—Numba
  5. C++--第12课 - 操作符重载 - 上
  6. mac install wget
  7. IIS7下MP4视频无法加载解决方法
  8. 《Linux内核设计与实现》课本第十八章自学笔记——20135203齐岳
  9. SSE指令介绍及其C、C++应用 zz
  10. Des加密后传参被特殊字符(如+)截断