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

默认从小到大排序

①快速法排序

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

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方法可以轻松解决。

 

posted @ 2017-03-26 09:37  柠檬水请加冰  阅读(169)  评论(0编辑  收藏  举报