码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA基础学习笔记_四种排序方法

时间:2017-03-26 12:59:19      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:快速   blog   pre   情况   控制   最大的   class   基础学习   style   

默认从小到大排序

①快速法排序

第一轮:第一个数依次与后面的数比较,若第一个数较大,则两数互换位置,即最小的数被放在了第一位

for(i=0;i<a.length-1;i++)       //控制比较轮次
    for(j=i+1;j<a.length;j++)   //总是与其后面的数依次比较
        if(a[i]>a[j])
        {  
            t=a[i];
            a[i]=a[j];
            a[j]=t;           
        }

 

②选择法排序

第一轮:1-n数,求出最小数,然后与第一个数互换位置

for(i=0;i<a.length-1;i++)        //控制轮次
{
    k=i;                         //假设为最小数
    for(j=i+1;j<a.length;j++)
       if(a[k]>a[j]) k=j;        //求出当前轮次最小数    
        if(i!=k)
        {  
            t=a[i];
            a[i]=a[k];
            a[k]=t;           
        }
}

 

③冒泡法排序

第一轮:第一个数和第二个数比较,大的放后面,然后第二个数(较大的)再与第三个数比较,就这样最大的数浮到了最上层(最后一个数的位置)

for(i=0;i<a.length-2;i++)       //控制比较轮次
    for(j=0;j<a.length-1;j++)   //控制比较范围
        if(a[j]>a[j+1])
        {  
            t=a[j];
            a[j]=a[j+1];
            a[j+1]=t;           
        }


④插入法排序

第一轮:第二个数与第一个数比较,若第二个数较大则放在第一个数后面,否则放在第一个数的位置,第一个数向前一位

for(i=1;i<a.length;i++)      //依次放剩下的n-1个数
{
    for(j=0;j<i;j++)         //依次和已排好序的数比较,从小到大
        if(a[i]<a[j]) break; //找到它应该插入的位置
    x=a[i];              //防止出现两数互换的情况下覆盖当前数
    for(t=i-1;t>=j;t--)
        a[t+1]=a[t];     //在确定位置及其后面的数依次向前移一位
    a[j]=x;              //当前数放在确定位置上
}


如果只是一维数组排序的话,Arrays.sort方法可以轻松解决。

 

JAVA基础学习笔记_四种排序方法

标签:快速   blog   pre   情况   控制   最大的   class   基础学习   style   

原文地址:http://www.cnblogs.com/NextLight/p/6621702.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!