插入排序---冒泡排序

package com.wuxifu.insert;

public class Insert001
{
       public static void main(String[] args)
    {

//插入排序
        int[]   i=new int[]{110,120,9999,11111,99,88,55,111,999,444,200};
        for (int insert = 1; insert < i.length; insert++)
        {
          //要插入的数,不要准备插入数的index
            int insertNum=i[insert];
           
            //依次跟前面的数进行比较 ,

          //先跟前面已排好顺序的最后一位进行比较,绝对不能跟已排好顺序的数的第一位进行比较,那样就会出错
            for (int j2 = insert-1; j2>=0; j2--)

           //for (int j2 = 0; j2<=insert-1; j2++)  这样比就会出错的,大错特错
            {
              //比要插入的数大 就向后移动一位
               if(i[j2]>insertNum)
               {
                  i[j2+1]=i[j2];
                  i[j2]=insertNum;
               }
                  
            }
        }
        for (int j = 0; j < i.length; j++)
        {
            System.out.println(i[j]);
        }

//插入排序(2)

/**
  * 画线,不要系统的路线规划
  *
  * @param start
  * @param wayPoints
  * @param end
  */
 private void drawLine(LatLng start, List<LatLng> wayPoints, LatLng end) {

  List<LatLng> points = new ArrayList<LatLng>();
  if (start != null) {
   points.add(start);
  }
  if (wayPoints != null) {
   points.addAll(wayPoints);
  }
  if (end != null) {
   points.add(end);
  }

  for (int i = 1; i < points.size(); i++) {
   LatLng insertLatLng = points.get(i);
   for (int j2 = i - 1; j2 >= 0; j2--)
   // TODO 已排好序的
   {
    // 已排好序的比要插入的数大 就向后移动一位
    LatLng latLng = points.get(j2);
    double distance = DistanceUtil.getDistance(latLng, points.get(0));
    double insertDis = DistanceUtil.getDistance(insertLatLng, points.get(0));
    if (distance > insertDis) {
     points.remove(j2);
     points.add(j2+1, latLng);
    }

   }

  }

  OverlayOptions ooPolyline = new PolylineOptions()
    .width((int) getResources().getDimension(R.dimen.dimen5) / 2)
    .color(getResources().getColor(R.color.verifying))
    .points(points);
  baiduMap.addOverlay(ooPolyline);
 }

//冒泡排序

 int[] a=new int[]{110,11,55,888,99,456,100};
     //第一个for只是说要遍历多少次,可以多不能少, 不牵及数组的索引
     //第二个for牵及数据的索引,所以要注意
     for (int i = 0; i < a.length; i++)//也可以a.length-1不过多排一次也没事的!!!!
        {
         for (int j = 0; j < a.length-i-1; j++)//因为下面的索引到了J+1所以这里要减去1,不然会越界
            {
             if(a[j]>a[j+1])
             {
              //前面的数大于后面的数
              int   temp=a[j];//将前面的数的值保存起来
              a[j]=a[j+1];//改变前面数的引用
              a[j+1]=temp;//改变后面数的引用
             } 
            }
        }
     for (int i = 0; i < a.length; i++)
        {
         System.out.println(a[i]);
        }
    }
}

猜你喜欢

转载自wuxifu001.iteye.com/blog/1773717
今日推荐