排序算法01-简单排序

简单排序算法共三种,分别是冒泡排序、选择排序、插入排序,这三种排序算法的算法复杂度均为O(n^{^{2}}),这三种排序算法虽然简单,但却是使用频率比较高的;

1.冒泡排序的实现原理: 

 冒泡排序的原理就是按照顺序相邻的比较两个元素,如果前者大于后者,则交换位置,如下图:

 观察可知,最大元素9已经被移动到最后的位置,同理可以完成排序。

2.选择排序的实现原理:

选择排序的原理就是每次选择一个当前元素,然后向后查找最小的元素,如果最小元素小于当前元素再将最小的元素与当前元素交换,如下图:

3.插入排序的实现原理 :

插入排序的原理是每次选择一个当前元素(以第二个元素开始),依次与前面的元素比较,如果小于前面的元素则继续比较,直到找到比自己大的元素,然后插入到该元素的位置,比较过的元素都往后移一位,如下图:

源程序如下: 

    // 冒泡排序
    public static int[] BubbleSort(int[] arr)
    {
        for (int i = 0; i < arr.length; i++)
            for (int j = 0; j < arr.length - i - 1; j++)
                if (arr[j] > arr[j + 1])
                {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
        return arr;
    }

    // 选择排序
    public static int[] SelectSort(int[] arr)
    {
        for (int i = 0; i < arr.length - 1; i++)
        {
            int k = i;
            for (int j = i; j < arr.length; j++)
                if (arr[j] < arr[k])
                    k = j;
            int temp = arr[i];
            arr[i] = arr[k];
            arr[k] = temp;
        }
        return arr;
    }

    // 插入排序
    public static int[] InsertSort(int[] arr)
    {
        int temp;
        int j;
        for (int i = 1; i < arr.length; i++)
        {        
            temp = arr[i];
            j = i - 1;
            while (j >= 0 && temp < arr[j])
            {
                arr[j + 1] = arr[j];
                j--;
            }
            arr[j + 1] = temp;
        }
        return arr;
    }

    

猜你喜欢

转载自blog.csdn.net/qq_38258310/article/details/82391861
今日推荐