排序算法(java)

原创 2016年08月29日 15:32:52

持续更新中

冒泡排序

程序如下:

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;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java各自排序算法的实现

  • 2015年06月16日 16:27
  • 3KB
  • 下载

java版6种排序算法

  • 2015年11月11日 10:32
  • 3KB
  • 下载

各种排序算法的深入分析及java实现

排序一直以来都是让我很头疼的事,以前上《数据结构》打酱油去了,整个学期下来才勉强能写出个冒泡排序。由于下半年要准备工作了,也知道排序算法的重要性(据说是面试必问的知识点),所以又花了点时间重新研究了一...

Java排序算法源代码

  • 2015年11月07日 14:02
  • 4KB
  • 下载

Java各种排序算法

  • 2014年08月17日 11:18
  • 135KB
  • 下载

十大排序算法 JAVA代码

冒泡排序 插入排序 选择排序 希尔排序 归并排序 快速排序 堆排序 计数排序 基数排序 桶排序参考了这篇博客总体总结表:这个有个错误就是归并排序需要一个o(n)的辅助数组 冒泡排序主要思想:外层循环...

Java几种排序算法

  • 2013年09月24日 20:41
  • 74KB
  • 下载

java各种排序算法

  • 2013年01月07日 22:14
  • 29KB
  • 下载

java实现的各种排序算法

折半插入排序 折半插入排序是对直接插入排序的简单改进。此处介绍的折半插入,其实就是通过不断地折半来快速确定第i个元素的插入位置,这实际上是一种查找算法:折半查找。Java的Arrays类里的binar...

java编写的插入排序算法

  • 2013年10月25日 17:40
  • 159KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:排序算法(java)
举报原因:
原因补充:

(最多只允许输入30个字)