#算法排序(Java版)#冒泡排序、选择排序
来源:互联网 发布:淘宝网的营销策略 编辑:程序博客网 时间:2024/05/16 07:45
冒泡排序法
冒泡排序是一种相邻数据交换的排序的方法。
冒泡排序的基本思想是:对待排序记录关键字从后往前(逆序)进行多遍扫描,当发现相邻两个关键字的次序与排序要求的规则不符时,就将这两个记录进行交换。这样,关键字比较小的记录将逐渐从后面想前面移动,就像气泡在水中向上浮一样,所以该算法也称为气泡排序。
冒泡排序算法的运作如下:
1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
排序过程
假设有一数组arr[]{8,7,4,1,9,6}进行冒泡排序。
第一次排序的过程
下标
①
②
③
④
⑤
0
8
8
8
8
1
1
7
7
7
1
8
2
4
4
1
7
7
3
1
1
4
4
4
4
9
6
6
6
6
5
6
9
9
9
9
整个冒泡排序的过程
下标
0
8
1
1
1
1
1
7
8
4
4
4
2
4
7
8
6
6
3
1
4
7
8
7
4
9
6
6
7
8
5
6
9
9
9
9
核心算法:
(1)逆序
public static int[] BubbleSort(int[] arr){for(int i = 0;i<arr.length-1;i++){for(int j = arr.length-1;j>i;j--){if(arr[j]<arr[j-1]){int temp = arr[j-1];arr[j-1] = arr[j];arr[j] = temp;}}}return arr;}
(2)顺序
public static int[] BubbleSort_1(int[] arr){for(int i = 0;i<arr.length-1;i++){for(int j = 0;j<arr.length-i-1;j++){if(arr[j]>arr[j+1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}return arr;}
个人建议选择第一种方法,即逆序,比较简单
简单选择排序法
选择排序的基本思想:对n个记录进行扫描,选择最小的记录,将其输出,接着在剩下的n-1个记录中扫描,选择最小的记录将其输出,不断重复这个过程,直到只剩一个记录为止。
选择排序的编程思想:
选择排序的第一层循环从起始元素开始选到倒数第二个元素,主要是在每次进入的第二层循环之前,将外层循环的下标赋值给临时变量,接下来的第二层循环中,如果发现有比这个最小位置处的元素更小的元素,则将那个更小的元素的下标赋给临时变量,最后,在二层循环退出后,如果临时变量改变,则说明,有比当前外层循环位置更小的元素,需要将这两个元素交换.
排序过程
假设有一数组arr[]{8,7,4,1,9,6}进行选择排序。
下标
①
②
③
④
⑤
0
8
1
1
1
1
1
1
7
7
4
4
4
4
2
4
4
7
6
6
6
3
1
8
8
8
7
7
4
9
9
9
9
9
8
5
6
6
6
7
8
9
核心代码:
public static int[] SelectSort(int[] arr){for(int i =0;i<arr.length-1 ;i++){int flag = i; for(int j = i+1;j<arr.length;j++ ){if(arr[flag]>arr[j]){flag = j;}}if(flag !=i){int temp =arr[i];arr[i] = arr[flag];arr[flag] = temp;}}return arr;}
- #算法排序(Java版)#冒泡排序、选择排序
- Java排序算法(冒泡排序、选择排序、插入排序、反数组排序、快速排序)例子
- #.java实现排序算法:插入排序、选择排序、冒泡排序
- java排序算法:冒泡排序、选择排序、插入排序
- java冒泡排序 选择排序 算法
- 排序(快排,冒泡,堆排序,插入排序,归并排序,选择排序)算法Java实现
- java实现各种排序算法(包括冒泡排序,选择排序,插入排序,快速排序(简洁版))及性能测试
- 基础排序算法(冒泡排序、选择排序、插入排序)
- 排序算法一(冒泡排序、选择排序、插入排序)
- 排序算法(冒泡排序、选择排序、插入排序)
- 基本排序算法(冒泡排序,选择排序,插入排序)
- 排序算法一(冒泡排序、选择排序、插入排序)
- 选择排序、冒泡排序算法(Java实现)
- 选择排序、冒泡排序算法
- Java简单算法之 冒泡排序 选择排序 插入排序
- java实现冒泡排序,选择排序,插入排序算法详解
- 排序算法java 四 -- 冒泡排序、选择排序
- Java排序算法之冒泡排序和选择排序
- 海量数据批量插入本地测试平均1秒
- WP-Super Cache Garbage collection is not scheduled
- Java 10进制转2、8、16进制转换 / 2、8、16进制转10进制转换
- java 分布式
- jar文件导出及Linux平台下运行
- #算法排序(Java版)#冒泡排序、选择排序
- 自定义安卓控件
- 东师附中 1185 栈 中缀转后缀
- Exchange 03、07、10、13服务器的退信失败原因
- maven打包 \Application.java:[8,15] 警告:sun.misc.Signal 是 Sun 的专用 API,可能会在未来版本中删除
- unrecognized selector sent to class
- 网络编程中的完成端口
- typeof(undefined) == undefined 成立吗?
- PHP 类的自动加载详细介绍 leyangjun