一.原理解析
1.1 选择排序法
用一个数组的0索引元素依次和后面的元素两两进行比较,较小者往前放,第一次比较完,最小值出现在0索引处,比较的次数为数组长度-1
1.2 冒泡排序法
用一个数组的0索引元素依次和后面的元素两两进行比较,较大者往后放,第一次比较完,最大值出现在最大索引处,比较的次数为数组长度-1
1.3 原理图

二.代码
2.1 选择排序法
public class Test1 {
public static void main(String[] args) {
int [] arr = {1,15,8,97,78,25,36,79,88,97};
long start=System.nanoTime(); //获取程序开始时间
selectSort(arr);
long end=System.nanoTime(); //获取结束时间
System.out.println("程序运行时间: "+(end-start)+"ns");
}
public static void selectSort(int[] arr){
for(int i = 0 ; i < arr.length - 1; i++){
//内循环,是每次都在减少,修改变量的定义
for(int j = i+1 ; j < arr.length ; j++){
//数组的元素进行判断
if(arr[i] > arr[j]){
//数组元素换位
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
}
2.2 冒泡排序法
public class Test {
public static void main(String[] args) {
int [] arr = {1,15,8,97,78,25,36,79,88,97};
long start=System.nanoTime(); //获取程序开始时间
bubbleSort(arr);
long end=System.nanoTime(); //获取结束时间
System.out.println("程序运行时间: "+(end-start)+"ns");
}
public static void bubbleSort(int[] arr){
for(int x = 0 ; x < arr.length-1 ; x ++){ //比较的次数
for(int y = 0 ; y < arr.length-1-x; y ++){
//判断:两两比较,大的往后放..
if(arr[y] > arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
}
}
三.执行效率比较
以下表格内数据是使用冒泡排序法和选择排序法分别对包含10个元素的无序数组排序10次所使用的时间:
从均值数据来看,选择排序法的效率还是优于冒泡排序法的!
四.心得
学习了冒泡排序法、选择排序法和二分查找法以后,使我对算法产生了浓厚的兴趣,以我目前的认知来说,算法就是一条通往答案的捷径,起初是没有的,但是千千万万的前辈们作为探路者帮我们探索出来了!今后,我也会在这条路上继续探索!
当初决定转行时,就怕自己学不懂,毕竟是一个没怎么接触过的领域,随着学习的东西越来越多,虽然有时也会有疑惑,但是问同学、老师明白了以后的恍然大悟,敲出来的代码,自己查查找找,把bug解决完成功跑起来的成就感,使我乐在其中!希望在以后的学习中,我也能继续保持这种心态吧!
不忘初心,方得始终!

1574

被折叠的 条评论
为什么被折叠?



