【LintCode-463】整数排序(Java实现-冒泡排序/选择排序/插入排序)

来源:互联网 发布:php 协程 异步 编辑:程序博客网 时间:2024/06/05 10:06

这里写图片描述
冒泡排序:

    public void sortIntegers(int[] A) {        for(int j=0;j<A.length-1;j++)        for(int i=0;i<A.length-1-j;i++){            if(A[i]>A[i+1]){            int temp=A[i];            A[i]=A[i+1];            A[i+1]=temp;            }        }    }

个人解题思路:
对相邻的元素进行两两比较,如果前者比后者大,就相互交换。

选择排序:

    public void sortIntegers(int[] A) {        for(int i=0;i<A.length-1;i++){            int k=i;            for(int j=i+1;j<A.length;j++){//                k=A[k]>A[j]?j:k; //也可以替换下一行的判断语句                if(A[k]>A[j]){                    k=j;                }            }            //遍历当前数组找出最小值数组位置,如果位置与初始位置不同,则进行交换。            if(k!=i){                int tmp=A[i];                A[i]=A[k];                A[k]=tmp;            }        }    }

个人解题思路:
每一趟从待排序的数据元素中选择最小的一个元素作为首元素

插入排序:

    public void sortIntegers(int[] A) {        //从第二位开始,也就是A[1],将其插入已排序好的数组中        for(int i=1;i<A.length;i++){            if(A[i]<A[i-1]){                int tmp=A[i];                int j=i;                while(j>=1&&tmp<A[j-1]){                    //前一个的值赋予给当前值                    A[j]=A[j-1];                    j--;                                    }                A[j]=tmp;            }        }    }

个人解题思路:
每一步将下一个元素,插入到前面已经排好序的有序序列中去,并找到相应位置使序列依然处于有序。

如果您有更好的解法,欢迎您在留言区补充,感谢!!

阅读全文
0 0
原创粉丝点击