Algorithms 算法学习笔记20180412

今天一方面是补齐了昨天的8种排序算法的动态GIF图演示和算法过程。另一方面,我也要针对Java代码如何实现这些算法进行阐述。很明显这些内容已经有无数人给出了比较简洁的代码实现过程,我只挑选其中几种算法进行说明。相比于算法实现的具体细节,算法的适用范围和复杂度更应该受到关注。

先放上最普通最麻烦的Bubble Sort吧。

public class BubbleSort {

       public static void main(String[] args) {

       int [] a = {1,100,234,44,3,2,4,5};  //给定一个待排序数组a        

       bubbleSort(a,a.length+1);

       System.out.println(Arrays.toString(a)); }

public static int[] bubbleSort(int[] A, int n) {   //排序方法的代码

       for (int i=0;i A[j]){

        int tmp = A[i]; //如果左边元素大于右边,则交换两元素,否则保持不动

         A[i] = A[j]; A[j] = tmp; }  使用三句代码进行元素交换

         }

   }

return A; }

}

然后是插入排序。

public class InsertionSort {

        public int[] insertionSort(int[] A, int n) {

           int i, j, temp;

             for(i = 1; i < n; i++){

                    temp = A[i];         //取i位置的值

             for(j = i; j > 0 && A[j - 1] > temp; j-- ){   //这是两层for循环嵌套

             //如果i元素的值比前一个元素小,则将该值插在该位置

            A[j] = A[j - 1];

}

                A[j] = temp;

}

return A; }

}


接下来是选择排序,它的目标是每次选择剩下元素中最小的值放在最前面。

public class SelectionSort {

      public int[] selectionSort(int[] A, int n) {

        for (int i = 0; i < n - 1; i++) {

            int index = i;

            int j; // 找出最小值的元素下标

               for (j = i + 1; j < n; j++) {

                if (A[j] < A[index]) {

//从第一个元素开始,比较两个元素

              index = j; //如果A[j]小于选定的最小值,则交换对应的index

}

}

         int tmp = A[index];

        A[index] = A[i];

        A[i] = tmp;   //三句代码交换两个元素

} return A;

}

你可能感兴趣的:(Algorithms 算法学习笔记20180412)