掌握算法是作为程序员的基本必备素质,而排序也是各种算法的基础,虽说java帮我们封装好了各种数据类型的排序方法,可是我们还是要知道他的原理,下面我就说几种常用的算法及原理;
冒泡排序:
原理:相邻元素两两比较,大的往后放,每一次完毕,最大值出现在了最大索引处;
下面我们用图的方式直观的给大家展示
从上面的图来看,每一次比较交换的算法应该是
/for(int i=0;i<arr.length-1;i++){
if(arr[i]>arr[i+1]){
//值交换
int t=arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
首次比较五个数我们只需要比较四次;每多一次排序,少比较一次,因此i<arr.length-1;而这个过程我们需要五次的重复,每次我们给循环条件 -1;而这也是可以简化的,所以最后我们优化过后的算法为:
private static void sort(int[] arr) {
for(int j=0;j<arr.length;j++){
for (int i = 0; i < arr.length - 1 -j ; i++) {
if (arr[i] > arr[i + 1]) {
//值交换
int t = arr[i]