一篇文章讲述算法

本文章仅供平时自己测试复习的时候使用:

1冒泡排序(排序思路两两比较,找出最大的放到最后,逐次减少比较次数):

 int[] array = {1,9,2,3,8,10,4,7};
    @Test
    public void Test(){
        bubbleSort(array);
    }
    //冒泡排序方法
    public void bubbleSort(int[] array){
        for (int i=array.length-1;i>0;i--){
            for (int j=0;jarray[j+1]){
                    //使用临时参数
//                    int temp =array[j+1];
//                    array[j+1]=array[j];
//                    array[j]= temp;
                    //只使用两个参数的情况下
//                    array[j]= array[j]^array[j+1];
//                    array[j+1]= array[j]^array[j+1];
//                    array[j]= array[j]^array[j+1];
                    //使用加减法来排序
                    array[j] = array[j]+array[j+1];
                    array[j+1] = array[j]-array[j+1];
                    array[j]=array[j]-array[j+1];
                }
            }
        }
        for (int arrays: array) {
            System.out.print(arrays+", ");
        }
    }

2:选择排序:(思路:首先选择第一个元素放入中间变量,借助该中间变量从第一个元素开始两两比较,找出小的那个,第一轮找出最小的放第一个,依次下去)



//选择排序这种方式是错的,这种方式是冒泡排序的改变每次不是交换一个,而是交换多个
public void selectSort(int[] array){
    int temp;
    for (int i=0;iarray[j]){
                //下面的交换数据也可以有另外两种方式来写
                temp = array[i];
                array[i]=array[j];
                array[j]=temp;
            }
        }
    }
    for (int arrays:array) {
        System.out.print(arrays+", ");
    }
}

//选择排序的正确写法
 public void selectSort(int[] array){
        int temp;
        for (int i=0;iarray[j]){
                    temp = j;
                }
            }
            if (temp != i){
                int x = array[temp];
                array[temp]=array[i];
                array[i]= x;
            }
        }
        for (int arrays:array) {
            System.out.print(arrays+", ");
        }
    }

3:两路归并排序

public void mergeSort(int[] array,int start,int end){
    if (start 
  

 

 

你可能感兴趣的:(一篇文章讲述算法)