排序--冒泡,插入,选择

Posted blogofjzq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序--冒泡,插入,选择相关的知识,希望对你有一定的参考价值。

1.冒泡排序

(1)原理:多趟比较,每趟比较中通过对每对相邻数据进行不断的判断和交换将最大的数据放到未排序序列的最后,就像大泡泡不断向上浮动一样

(2)时间复杂度: 技术分享图片 

(3)算法稳定性:稳定

(4)代码实现:

public void sort(int[] array)
    {
        int size=array.length;
        for(int i=1;i<size;i++)
        {
            for(int j=0;j<size-i;j++)
            {
                if(array[j]>array[j+1])
                {
                    swap(array,j,j+1);
                }
            }
        }
    }

2.插入排序

(1)原理:每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。

(2)时间复杂度: 技术分享图片 

(3)算法稳定性:稳定

(4)代码实现:

public void sort(int[] array)
    {
        int size=array.length;
        for(int i=1;i<size;i++)
        {
            int temp=array[i];
            int j=i-1;
            while(j>=0&&temp<array[j])
            {
                array[j+1]=array[j];
                j--;
            }
            array[j+1]=temp;
        }
    }
    public void binarysort(int[] array)//折半插入
    {
        int size=array.length;
        for(int i=1;i<size;i++)
        {
            int temp=array[i];
            int low=0;
            int high=i-1;
            while(low<=high)
            {
                int mid=(low+high)/2;
                if(temp<array[mid])
                {
                    high=mid-1;
                }
                else
                {
                    low=mid+1;
                }
            }
            for(int j=i-1;j>=low;j--)
            {
                array[j+1]=array[j];
            }
            array[low]=temp;
        }
    }

3.选择排序

(1)原理:每一次从待排序的数据中选出最小的一个元素,存放在无序序列的起始位置,直到全部待排序的数据元素排完

(2)时间复杂度: 技术分享图片 

(3)算法稳定性:不稳定

(4)代码实现:

public void sort(int[] array)
    {
        int size=array.length;
        for(int i=0;i<size;i++)
        {
            int min=i;
            for(int j=i+1;j<size;j++)
            {
                if(array[min]>array[j])
                {
                    min=j;
                }
            }
            if(min!=i)
            {
                swap(array,min,i);
            }
        }
    }

 

以上是关于排序--冒泡,插入,选择的主要内容,如果未能解决你的问题,请参考以下文章

三大基础排序算法(冒泡排序,选择排序,插入排序)

python实现时间复杂度平均为N^2的冒泡选择插入排序

python实现时间复杂度平均为N^2的冒泡选择插入排序

python实现时间复杂度平均为N^2的冒泡选择插入排序

python实现时间复杂度平均为N^2的冒泡选择插入排序

排序算法学习(直接插入排序,希尔排序,选择排序,堆排序,冒泡排序)