简单排序的对比

bubblesort:前后两个元素进行比较,数值较大的元素向后移动,第一轮后最后一个位置上时最大元素;再循环一次,倒数第二位是次大的元素.....直到所有元素按从小到大排列好。

 public void bubblesort()
 {
    int i,j;
    for(i=0;i<nElems-1;i++)
     {
        for(j=0;j<nElems-1-i;j++)
          if(a[j]>a[j+1]) 
          swap(j,j+1);  
     }
 }

selectsort:(1)把第一个值设置成最小值,然后通过比较找出最小值,然后把最小值和第一个位置的元素互换;

                (2)然后把第二个元素设置成最小值,重复比较,互换的过程;直到倒数第二个元素与最后一个元素比较互换后,结束。

 public void selectsort()
 {
         int i,j,min;
         for(j=0;j<nElems-1;j++)
           {
               min=j;
               for(i=j+1;i<nElems;i++)
                  if(a[min]<a[i])
                     min=i;
                 swap(j,min);
             }
 }

insertsort:(1)从第二个元素开始,那第二个元素与它之前的所有元素作比较,比它大的都向后移动一位;然后把这个元素放到while循环结束时的位置上。

                (2)从i开始,则i之前的元素都是有序的。

public void insertsort()
 {
         for(int j=1;j<nElems;j++)
           {
              int key=a[j];
               int i=j;
   //while(a[i-1]>=key&&i>0) 这种条件下会出现下界溢出,不同条件之间的并列
   // 前后是有序的
             while(i>0&&a[i-1]>=key)
               {
                     a[i]=a[i-1];
     //i--; 
                     --i;
     //上面的为什么一样,但是正确是哪一种?
             }
     a[i]=key;
      }
 }

转载于:https://www.cnblogs.com/growAriel/p/3600860.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值