冒泡排序(Bubble Sort)
冒泡排序(Bubble Sort):排序思路:对要排序的数组或者列表从头到尾依次比较相邻的两个元素的大小关系,若大于则交换位置,否则跳过,经过第一轮比较排序后可得出最大值;然后使开始第二轮比较,得出第二大的值;依次比较,用同样的方法对剩下的元素逐个比较。如果有N个元素,那么一共要进行N-1轮比较,第M轮要进行N-M次比较,其中M
比如:对13, 14, 520, 85, 1, 20做冒泡排序;
![f4a110dd8586d6e53ba661be7dda55f5.png](https://i-blog.csdnimg.cn/blog_migrate/4385f28cb7cd0a1f9ba05b9b2816ce19.jpeg)
冒泡排序
![73ff747f6b290b10d596531c3ae4e099.png](https://i-blog.csdnimg.cn/blog_migrate/a65b1f2185e41a7865da7f0f47fe8c4f.jpeg)
冒泡排序 排序结果
选择排序(Selection Sort)
选择排序(Selection Sort):
基本思路:选择某个索引位置的元素,然后和后面元素依次比较,若大于则交换位置,经过第一轮比较排序后可得出最小值,第二轮会选出第二小的值,然后使用同样的方法依次对剩下的元素逐个比较即可。第一轮从arr[0]和后面元素相比较,第二轮从arr[1]和后面的元素相比较,依次类推。N个数要进行N-1轮。选择排序每一轮只进行一次交换,相对于冒泡排序效率高一些。
比如:对13, 14, 520, 85, 1, 20做选择排序;选择的索引是0,也就是从第一个元素开始:
![c5c6f7cd1c0af2eb6366d3bbaafbd1c3.png](https://i-blog.csdnimg.cn/blog_migrate/e18694052131abd6e9703b9f3e6ee6cd.jpeg)
选择排序
![2fa8340db6169bf1d807f65fbc62658c.png](https://i-blog.csdnimg.cn/blog_migrate/0ce1bfd87b27d07538dbbfdedde0d485.jpeg)
选择排序结果
在JDK中提供了一个数组的工具类(java.util.Arrays),封装了对数组的算法操作,以下是一些常用的:
- int binarySearch(type[] arr,type key) 使用二分法查找数组里某元素并返回其索引,若找不到返回负数.
- void sort(type[] arr) 使用调优后的快速法对指定数组排序。
- String toString(type[] arr) 返回指定数组内容的字符串表示形式。
- public static type[] copyOf(type[] original, int newLength) 复制指定的数组,截取或用 0 填充(如有必要),以使副本具有指定的长度。
完结。