排序算法初研

本文详细介绍了排序算法的基础知识,包括插入排序、选择排序和冒泡排序的原理与代码实现。重点突出算法的核心思想与应用案例。
 排序算法是每一个IT工作者,必不可少的。虽然JAVA API中封装了很多的配需算法,那么仍然需要做一个总结。笔者认为这是基本功,那些花把势最好不要用。
 排序算法可以分为两种:内排序和外排序,全部记录存放在内存,则称为内排序,如果排序过程中需要使用外存,则称为外排序。下面对内排序做一个总结。
 1、插入排序:直接插入排序、二分法插入排序、希尔排序
 2、选择排序:简单选择排序、堆排序。
 3、交换排序:冒泡排序、快速排序
 4、归并排序
 5、基数排序

一、插入排序
基本思想:基本经过了三步a,b,c大致可以明白其基本思想。首先标记一个3,然后嘉定412已经排序排好了,那么需要排在4前边,那就就是3412,然后再一次寻找一下一个标记着。
插入排序算法
代码如下

package cn.tallny.sort;

public class InserSort {
    public static void insertSort(int []number)

    {   for(int out=1;out<number.length;out++)
        {  int temp=number[out];
            int in=out;//记录一下被标记的
           //往下沉淀
            while(in>0&&temp>number[in-1])
            {
                number[in]=number[in-1];
                in--;
            }
            number[in]=temp;
        }


    }


    public static void main(String[] args) {
        int []number=new int[10];
        int []num;
        number[0]=8;
        number[1]=9;
        number[2]=6;
        number[3]=7;
        number[4]=5;
        number[5]=1;
        number[6]=3;
        number[7]=2;
        number[8]=10;
        number[9]=4;

        insertSort(number);

        for(int a:number)
        {
            System.out.print(a+"\t");
        }
    }
}

二、选择排序
思想:每趟从待排序的记录序列中选择关键字最小的记录放置到已排序表的最前位置,直到全部排完。
思想如图
这里写图片描述
代码如下:

package cn.tallny.sort;

public class SelectSort {

    public static void selectSort(int []number)
   {       for(int i=0;i<number.length-1;i++)
            {  int m=i;
               for(int j=i+1;j<number.length;j++)
                   {if(number[j]<number[m])
                       m=j;
                   }
               if(i!=m)
                   swap(number,i,m);
            }

    }
    public static void swap(int []number,int i,int j)
    {
        int temp=number[i];
        number[i]=number[j];
        number[j]=temp;

    }
    public static void main(String[] args) {
        int []number=new int[10];
        int []num;
        number[0]=8;
        number[1]=9;
        number[2]=6;
        number[3]=7;
        number[4]=5;
        number[5]=1;
        number[6]=3;
        number[7]=2;
        number[8]=10;
        number[9]=4;

        selectSort(number);
        for(int a:number)
        {
            System.out.println(a);
        }
    }

}

三、冒泡算法
思想:在要排序的一组数中,对当前还未排好序的全部数中,自上而下相邻的两个数一次进行比较和调整,让较大的数往下沉,较小的往上冒。
这里写图片描述
代码实现如下:

package cn.tallny.sort;

public class bubblingSort {
    public static void bubblingSort(int []number)
    {
        for(int i=0;i<number.length;i++)
        {
            for(int j=0;j<number.length-1-i;j++)
            {
                if(number[j]<number[j+1])
                    swap(number,j,j+1);

            }
            for(int a:number)
            {
                System.out.print(a+"\t");
            }
            System.out.println();

        }
    }




    public static void swap(int []number,int i,int j)
    {
        int temp=number[i];
        number[i]=number[j];
        number[j]=temp;

    }
    public static void main(String[] args) {
        int []number=new int[10];
        int []num;
        number[0]=8;
        number[1]=9;
        number[2]=6;
        number[3]=7;
        number[4]=5;
        number[5]=1;
        number[6]=3;
        number[7]=2;
        number[8]=10;
        number[9]=4;

        bubblingSort(number);
        /*for(int a:number)
        {
            System.out.println(a);
        }*/
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值