20--排序算法
排序算法
概念
所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。
常用的排序算法
冒泡排序
选择排序
快速排序
归并排序
冒泡排序
概念:冒泡排序算法是把较小的元素往前调或者把较大的元素往后调。这种方法主要是通过对相邻两个元素
进行大小的比较,根据比较结果和算法规则对该二元素的位置进行交换,这样逐个依次进行比较和
交换,就能达到排序目的。
核心就是: 相邻比较,位置交换.
动态原理图
代码实现:
package cn.tedu.bubble;
import java.util.Arrays;
import java.util.Random;
//冒泡排序测试
public class Test1_Bubble {
public static void main(String[] args) {
// 创建一个数组
int[] arr = new int[10];
//产生10个随机数
for (int i = 0; i <arr.length ; i++) {
arr[i]=new Random().nextInt(100);
}
System.out.println(Arrays.toString(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;
}
}
System.out.println("第"+(i+1)+"轮结果:"+Arrays.toString(arr));
}
}
}
结果:
[55, 21, 65, 45, 9, 29, 11, 8, 75, 47]//随机产生的数组
第1轮结果:[21, 55, 45, 9, 29, 11, 8, 65, 47, 75]
第2轮结果:[21, 45, 9, 29, 11, 8, 55, 47, 65, 75]
第3轮结果:[21, 9, 29, 11, 8, 45, 47, 55, 65, 75]
第4轮结果:[9, 21, 11, 8, 29, 45, 47, 55, 65, 75]
第5轮结果:[9, 11, 8, 21, 29, 45, 47, 55, 65, 75]
第6轮结果:[9, 8, 11, 21, 29, 45, 47, 55, 65, 75]
第7轮结果:[8, 9, 11, 21, 29, 45, 47, 55, 65, 75]
第8轮结果:[8, 9, 11, 21, 29, 45, 47, 55, 65, 75]
第9轮结果:[8, 9, 11, 21, 29, 45, 47, 55, 65, 75]