排序算法(java)

持续更新中

冒泡排序

程序如下:

public class BubbleSort
{
    public static void main(String args[])
    {
        int[] ages = {12,36,54,39,98,52,25,10,5,53,68,75};
        bubble(ages);
        for (int i = 0;i<ages.length ;i++ )
        {
            System.out.println(ages[i] + "  ");
        }
    }
    public static void bubble(int[] source)
    {
        //外层循环控制比较的次数,最多进行n-1次排序,n为元素个数
        //外层循环表示第i次扫描(比较)
        for (int i = source.length-1;i>0 ;i-- )
        {
            for (int j = 0; j<i;j++ )
            {
                //依次比较相邻两个元素的大小,若符合条件,则交换位置
                if (source[j] > source[j+1])
                {
                    swap(source, j, j+1);
                }
            }
        }
    }
    public static void swap(int[] source, int x, int y)
    {
        int temp = source[x];
        source[x] = source[y];
        source[y] = temp;
    }
}

下图表示第i次扫描时,依次比较相邻元素大小,并交换位置

选择排序

基本思想:首先扫描整个数组,找出最小元素,将其存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小元素,放到排序序列末尾。以此类推,直到所有的元素排序完毕。

程序如下:

public class SelectSort
{
    public static void main(String args[])
    {
        int[] ages = {12,36,54,39,98,52,25,10,5,53,68,75};
        selectSort(ages);
        for (int i = 0;i<ages.length ;i++ )
        {
            System.out.println(ages[i] + "  ");
        }
    }
    public static void selectSort(int[] source)
    {
        for (int i = 0;i < source.length ;i++ )
        {
            for (int j = i+1; j<source.length;j++ )
            {
                //依次比较元素i与其他元素的大小,若符合要求,交换位置
                if (source[i] > source[j])
                {
                    swap(source, i, j);
                }
            }
        }
    }
    public static void swap(int[] source, int x, int y)
    {
        int temp = source[x];
        source[x] = source[y];
        source[y] = temp;
    }
}

插入排序

基本思想:插入排序算法是一个对少量元素进行排序的有效算法。插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置(当手中只有一张牌时,我们可以认为这张牌已经排序好了)。为了找到这张牌的正确位置,要将它与左手中已有的每张牌从右到左依次进行比较,然后将其插入到合适的位置,这样可以保证,每当摸起新牌时,左手中的牌都是排序好的。具体算法过程描述如下:

  1. 从第一个元素开始,该元素可以认为已经被排序;
  2. 取出下一个元素,在已排序的元素序列中从后向前扫描;
  3. 将新取出的元素与已有元素两两依次比较大小,直至新元素插入到合适的位置(相当于下文程序中的循环j);
  4. 重复步骤2(相当于下文程序中的循环i);

程序如下:

public class InsertSort
{
    public static void main(String args[])
    {
        int[] ages = {12,36,54,39,98,52,25,10,5,53,68,75};
        insertSort(ages);
        for (int i = 0;i<ages.length ;i++ )
        {
            System.out.println(ages[i] + "  ");
        }
    }
    public static void insertSort(int[] source)
    {
        for (int i = 0;i < source.length ;i++ )
        {
            for (int j = i; (j>0)&&(source[j]<source[j-1]);j-- )
            {
                swap(source, j, j-1);   
            }
        }
    }
    public static void swap(int[] source, int x, int y)
    {
        int temp = source[x];
        source[x] = source[y];
        source[y] = temp;
    }
}
阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hnyzwtf/article/details/52353574
文章标签: java 排序算法
个人分类: Java
想对作者说点什么? 我来说一句

java各种排序算法

2008年02月01日 12KB 下载

Java实现的常见排序算法.pdf

2011年10月26日 99KB 下载

各种排序算法java实现

2011年06月17日 13KB 下载

Java所有排序算法大全

2009年03月10日 11KB 下载

Java各种排序算法

2012年01月04日 83KB 下载

java 常用排序算法

2009年04月17日 52KB 下载

没有更多推荐了,返回首页

不良信息举报

排序算法(java)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭