数组的排序

        如何对乱序的数组进行排序呢?今天介绍两种最基础也是十分实用的两种排序方法,冒泡排序和插入排序。

        1、冒泡排序

        冒泡排序法是最基本的排序法之一,冒泡排序法的运行机制是通过循环遍历元素并调整相邻元素顺序来实现的一种简单排序   方法。以数组{21,99, 3, 1024, 16}升序排列为例介绍冒泡排序的原理
for(int i=0;i<numberArray.length-1;i++){
     int current = numberArray[i];
     int next = numberArray[i+1];
    if(current>next){
          numberArray[i+1] = current;
        numberArray[i] = next;
    }
}
当上面的代码运行之后,数组会变为{21, 3,99, 1024, 16},
那么,给上面的代码加上外层循环就是冒泡排序。
for(int loopTime=1;loopTime<numberArray.length;loopTime++){
    for(int i=0;i<numberArray.length-loopTime;i++){  
         int current = numberArray[i];  
         int next = numberArray[i+1];  
        if(current>next){       
              numberArray[i+1] = current;  
              numberArray[i] = next;  
        }
    }
}

其实,如果我们去思考,不难发现,内层for循环的循环其实是有多余的,我们将循环条件改为
        array.length-loopTime
从提高代码的性能角度出发,减少该循环“多余”的循环次数;

冒泡排序的实质:相邻两个元素比较,然后按照升序或降序调换位置。

2、插入排序
        每循环一次都将一个待排序的元素所对应的数据按其顺序大小插入到前面已经排序的序列的合适位置,直到全部插入排序完为止,其难点在于如何在前面已经排好序的序列中找到合适的插入位置。

插入排序的实质:将数组分为有序区和无序区,定义一个标记无序区第一个元素的定位变量,将该元素与前面的有序区内元素遍历比较,找到该元素应该插入位置,然后将插入位置到插入元素所在位置之间的元素后移一位,最后再将待插入元素插入到应插入的位置,有序区扩增一位,无序区减少一位,定位变量再次后移,锁定后面无序区第一位元素位置。
阅读更多
上一篇数组的定义和使用
下一篇浅谈类与对象
想对作者说点什么? 我来说一句

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

关闭
关闭
关闭