LintCode整数排序

题目

Given an integer array, sort it in ascending order. Use selection sort, bubble sort, insertion sort or any O(n2) algorithm.

Example Given[3, 2, 1, 4, 5] , return[1, 2, 3, 4, 5]
.

分析

显然这道题我们可以用冒泡,选择,插入等排序方法实现。
就此机会正好复习一下这三种复杂度为 O(n2)的排序算法

解答

冒泡排序

public class Bubble {

    public static void sort(int a[])
    {
        int N = a.length;
        
        for(int i=0;i<N;i++)
        {
            for(int j=0;j<N-i-1;j++)
            {
                if(a[j+1]<a[j])
                    exch(a,j,j+1);
            }
        }
    }
}

选择排序

public class Selection {

    public static void sort(int a[])
    {
        int N = a.length;
        
        for(int i=0;i<N;i++)
        {
            int min = i;
            for(int j=i+1;j<N;j++)
            {
                if(a[j]<a[min])
                    min = j;
            }
            exch(a,i,min);
        }
    }
}

插入排序

public class Insert {

    public static void sort(int a[])
    {
        int N = a.length;
        
        for(int i=1;i<N;i++)
        {
            for(int j=i;j>0 && a[j]<a[j-1];j--)
            {
                exch(a,j,j-1);
            }           
        }
    }
}

小结

三种排序都用了两个for循环实现。实现这三种排序的代码很多,也可以用while循环实现。重要的是三种排序方法的思想以及将算法转换为代码的能力

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文发表在我的博客:整数排序求关注、求交流、求意见、求建议。 问题 LintCode:整数排序 描述 给一组整数,...
    華方阅读 4,355评论 0 1
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 难度:入门 要求: 给一组整数,按照升序排序,使用选择排序,...
    柒黍阅读 3,349评论 0 0
  • 给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。您在真实的面试中是否遇...
    DayDayUpppppp阅读 3,030评论 0 0
  • Ba la la la ~ 读者朋友们,你们好啊,又到了冷锋时间,话不多说,发车! 1.冒泡排序(Bub...
    王饱饱阅读 5,776评论 0 7
  • 冷静地坐下来,讲道理、做示范,这是行为;把脸沉下来,或者骂人家蠢猪,那是你发泄出来的态度,不是影响他人的行为。
    心不在马阅读 1,598评论 0 0

友情链接更多精彩内容