1 问题描述
给定一个可排序的n元素序列(例如,数字、字符和字符串),将它们按照非降序方式重新排列。

2 解决方案
2.1 选择排序原理简介

选择排序开始的时候,我们从第一个元素开始扫描整个列表,找到它的最小元素,然后和第一个元素交换,将最小元素和第一个元素交换位置;然后,我们从第二个元素开始扫描剩下的n-1个元素,找到这n-1个元素中的最小元素,将最小元素和第二个元素交换位置;然后从第三个元素开始扫描…一般来说,就是从第i个元素开始扫描,找到第n-i+1个元素中的最小元素,将最小元素与第i个元素交换位置。这样,在进行n-1次遍历后,该列表就排好序了。

package com.liuzhen.chapterThree;public class SelectionSort {public static void getSelectionSort(int[] a){int min = 0;     //用于存放n-i序列中最小元素序号int temp = 0;    //交换数组元素值的中间变量//打印输出未排序前数组序列System.out.print("排序前:          ");for(int p = 0;p < a.length;p++)System.out.print(a[p]+"\t");System.out.println();for(int i = 0;i < a.length-1;i++){min = i;for(int j = i+1;j < a.length;j++){if(a[j] < a[min])min = j;}//交换a[i]和a[min]的值temp = a[i];a[i] = a[min];a[min] = temp;//打印输出每一次选择排序结果System.out.print("排序第"+(i+1)+"趟:");for(int p = 0;p < a.length;p++)System.out.print(a[p]+"\t");System.out.println();}}public static void main(String args[]){int[] a = {89,45,68,90,29,34,17};getSelectionSort(a);}
}

运行结果:

排序前:   89    45    68    90    29    34    17
排序第1趟:17    45    68    90    29    34    89
排序第2趟:17    29    68    90    45    34    89
排序第3趟:17    29    34    90    45    68    89
排序第4趟:17    29    34    45    90    68    89
排序第5趟:17    29    34    45    68    90    89
排序第6趟:17    29    34    45    68    89    90

2.3 冒泡排序原理简介
我们从列表的第一个元素开始,比较列表中相邻的两个元素,如果第一个元素大于第二元素,则交换这两个元素的位置,否则就从第二个元素位置开始重复上一步操作。重复多次以后,最大的元素就“沉到”列表的最后一个位置。这样一直做,直到n-1遍以后,该列表就排好序了。

package com.liuzhen.chapterThree;public class BubbleSort {public static void getBubbleSort(int[] a){int temp;      //打印输出未排序前数组序列System.out.print("排序前:          ");for(int p = 0;p < a.length;p++)System.out.print(a[p]+"\t");System.out.println();            for(int i = 0;i < a.length-1;i++){            for(int j = 0;j < a.length-1-i;j++){if(a[j+1] < a[j]){//交换a[j]和a[j+1]的值temp = a[j];a[j] = a[j+1];a[j+1] = temp;}}//打印输出每一次选择排序结果System.out.print("排序第"+(i+1)+"趟:");for(int p = 0;p < a.length;p++)System.out.print(a[p]+"\t");System.out.println();}}public static void main(String args[]){int[] a = {89,45,68,90,29,34,17};getBubbleSort(a);}
}

运行结果:

排序前:   89    45    68    90    29    34    17
排序第1趟:45    68    89    29    34    17    90
排序第2趟:45    68    29    34    17    89    90
排序第3趟:45    29    34    17    68    89    90
排序第4趟:29    34    17    45    68    89    90
排序第5趟:29    17    34    45    68    89    90
排序第6趟:17    29    34    45    68    89    90

Java实现选择排序和冒泡排序相关推荐

  1. Java利用选择排序和冒泡排序实现对键盘录入的数据排序

    Java利用选择排序和冒泡排序实现对键盘录入的数据排序 选择排序 选择排序是遍历元素找到最大(最小)的元素,放到第一个位置然后到剩余的元素里找到第二大(小)的元素放到第二个,因此类推,就可以得到一个排 ...

  2. java中选择排序和冒泡排序_Java选择排序就是比冒泡排序牛「具体详情,请看此文」...

    什么是选择排序 选择排序原理即是,遍历元素找到一个最小(或最大)的元素,把它放在第一个位置,然后再在剩余元素中找到最小(或最大)的元素,把它放在第二个位置,依次下去,完成排序. 时间复杂度 选择排序的 ...

  3. Java中选择排序,冒泡排序,插入排序,快速排序

    一:冒泡法排序  //冒泡排序 注:从小到大排    //特点:效率低,实现简单   //思想:每一趟将待排序序列中最大元素移到最后,剩下的为新的待排序序列,重复上述步骤直到排完所有元素. 这只是冒泡 ...

  4. 蛮力法在排序算法中的应用(JAVA)--选择排序、冒泡排序

    蛮力法在排序算法中的应用 对于一个排序问题,我们能想到的最简单的排序方法就是选择和冒泡 1.选择排序:时间复杂度O(n^2) public class Main {public static void ...

  5. java数组排序冒泡排序_java数组常见的排序——选择排序和冒泡排序

    将数组中的元素按照一定的顺序(从小到大,或从大到小)排列 1,以下用了常用的两种排序,选择排序和冒泡排序 package com.mydemo02; import java.util.Arrays; ...

  6. Java基础语法——选择排序、冒泡排序以及二分查找法和Arrays类的使用

    本文将带你了解选择排序.冒泡排序以及二分查找法的原理和代码实现,以及通过Arrays类快速实现对数组的一些操作 文章目录 一.选择排序 二.冒泡排序 三.二分查找法 四.Arrays类(对数组的操作) ...

  7. Java小结(四)——折半查找、选择排序、冒泡排序

    最常见的一些基本算法,比如折半查找,选择排序,冒泡排序. 折半查找,是它是一种效率较高的查找方法.但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列     即数组内元素必须是 ...

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

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

  9. 蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现

    这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...

  10. c 冒泡排序_C语言中选择排序和冒泡排序

    点击上方"C语言中文社区",选择"设为星标★" 技术干货第一时间送达! 来源:https://blog.csdn.net/zjy18886018024/cate ...

最新文章

  1. MYSQL主从数据库搭建
  2. 中汽创智科技首席人工智能官丁华杰:AI赋能自动驾驶的几点思考
  3. 上传文件 苹果系统选不了excel_每日一课 | 几个好用的Excel技巧,安利了(五)...
  4. 原理图、PCB和实物是如何对应起来的
  5. hashCode() 和equals() 区别和作用
  6. Dubbo使用启动时检查 check=“true“
  7. .NET开发框架(三)-高可用服务器端设计
  8. 超级计算机适用于科学计算,中国科学院
  9. ddos源码 ntp_详解 NTP反射型DDos攻击
  10. javasript模块化
  11. python2和python3中encoding的差别
  12. 关于Fluent瞬态计算你必须掌握的3个技巧
  13. 分组卷积和空洞卷积总结
  14. MATLAB实现QPSK
  15. 深度卷积网络:第三课
  16. 安装mysql_python
  17. TextView中加横线
  18. PJSIP 下载和编译
  19. springboot 中如何使用 ingest-attachment
  20. Java基础(适合新学者和架构师阅读)

热门文章

  1. 2022-03-24 windows pc和Android 手机同屏软件vysor,download网址: https://www.vysor.io/#
  2. 这是我经历过最惨的转正答辩了
  3. Vue的MVVM框架
  4. 项目练习:在线抽奖系统
  5. JavaScript弹窗
  6. 斐讯K2P B1 博通TTL刷机方法
  7. python操作cad的模块_利用python控制Autocad:pyautocad方式
  8. 铁路CAD设计辅助软件V2.0
  9. java开发需要英语吗_学习Java开发英语不好的可以学吗?
  10. 浅谈软件工程学习心得