简单内部排序

冒泡排序:
 
package com.ly.bubble;
/**
* 原理 略..........
* 冒泡 排序 按照 升序 排列    
* 只轮回 n-1 回
* 排列次数    第一轮 比较: n-1 次
*                    第二轮 比较: n-2 次
*                     .
*                     .
*                     .
*                    第n-1轮 比较: 1 次
*/
import java.util.Random;
/**
*    
* @author Administrator
*
*/
public class A {
     public static void main(String args[]){
     int temp=0;
     int a[]={     //初始化数组
         new Random().nextInt(100),
         new Random().nextInt(100),
         new Random().nextInt(100),
         new Random().nextInt(100),
         new Random().nextInt(100),
         new Random().nextInt(100),
         new Random().nextInt(100),
         new Random().nextInt(100),
         new Random().nextInt(100),
         new Random().nextInt(100)
     };
    print(a); //打印 排序前
         for( int i=0;i<=a.length-2;i++)     //进行 n-1轮
             for( int j=0;j<=a.length-i-2;j++) //进行n-i-1轮
            {
             if(a[j]>a[j+1]){ //如果 j比j+1的值大 则交换
                temp=a[j+1];
                a[j+1]=a[j];
                a[j]=temp;
             }
            }
         System.out.println(Integer.MAX_VALUE+ "\n");
         print(a); //打印排序后
    }
     /**
     * 打印数组arr的元素
     * @param arr
     */
     public static void print( int arr[]){
     for( int i=0;i<=arr.length-1;i++) System.out.print(arr[i]+ "\t");
    }
}
插入排序:
/**
* 直接插入排序 :
*    
*         从第二个位置(数组下标一)开始    一共进行n-1轮 插入
*            第一轮: 将第二个位置和前面的比较找到合适位置->移位->插入
*            第二轮: 将第三个位置和前面比较找到合适位置 ->移位->插入
*             .
*             .
*             .
*             .
*             .
*             .
*            第n-1轮:将第n个位置 和前面n-1个位置进行比较找到合适位置->移位->插入
*            
*            需要一个变量: flag来设置 第i个位置的值
*/
package com.ly.insert;

import java.util.Random;
/*

*/
public class A {
     public static void main(String[] args) {
       // TODO Auto-generated method stub    
         int flag;
         int a[]={     //初始化数组
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100)
         };
        print(a); //打印 排序前
         for( int i=1;i<a.length;i++){ //第i轮 从第二个元素 下标为1开始
         flag=a[i];
         for( int j=0;j<i;j++){ //进行查找 插入的位置
             if(flag<a[j]){ //如果 flag 小于 前 面的数 则查找了插入位置
                                         //进行移位
             for( int temp=i;temp>j;temp--){
                a[temp]=a[temp-1];
             }
             a[j]=flag;
             break; //找到了插入位置就不继续查找 此轮结束 继续下一轮
            }
         }
        }
        System.out.println(); //打印分隔行
        print(a); //排序后的结果
    }
         /**
         * 打印数组arr的元素
         * @param arr
         */
         public static void print( int arr[]){
         for( int i=0;i<=arr.length-1;i++) System.out.print(arr[i]+ "\t");
        }
  }
选择排序:
/**
* 选择排序
* 把一个无须数组 按照升序排列
* 所谓 选择排序,就是通过选择 (进行n-1轮)
*            flag=0                         第一轮    : 将从所有元素中选择出 最小的一个元素放在第一个位置
*            flag=1                         第二轮    : 将从余下(n-1)个元素中选择 最小的放在 第二个位置
*            flag=2                             .
*                                                     .
*            flag=i-1                         第i轮     : 将从剩下的n-i+1个选择最小的一个放在第i个位置    
*                                                     .
*            flag=n-2                         第n-1轮 : 将从剩下的2个元素中选择 较小的放在 倒数第二个位置
*                                                    
*需要 一个个临时变量来记录: minIndex (记录当前最小值所在的小标)    
*
*一轮 只进行交换一次    
*/
package com.ly.select;

import java.util.Random;

/**
*/
public class A {

   /**
    * @param args
    */
   public static void main(String[] args) {
     // TODO Auto-generated method stub
         int temp=0; //用于交换的临时变量
         int minIndex;    
         int a[]={     //初始化数组
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100),
             new Random().nextInt(100)
        };
     print(a); //打印 排序前
     for( int i=0;i<=a.length-2;i++){ //进行n-1轮选择    
            minIndex=i; //保存此时 要进行 插入最小值的 标志位 flag
             for( int j=i+1;j<a.length;j++)  {        
                 if(a[j]<a[minIndex]) {
                    minIndex=j;
                 }
            }
             if(minIndex!=i){ //如果 该元素不是最小的就进行交换
              temp=a[i];
              a[i]=a[minIndex];
              a[minIndex]=temp;
            }
     }
     System.out.println(); //打印分隔行
     print(a); //排序后的结果
  }
     /**
        * 打印数组arr的元素
        * @param arr
        */
     public static void print( int arr[]){
         for( int i=0;i<=arr.length-1;i++) System.out.print(arr[i]+ "\t");
     }
}

你可能感兴趣的:(职场,休闲)