代码改变世界

插入排序,选择排序,冒泡排序等常用排序算法(java实现)

  1 package org.webdriver.autotest.Study;
  2 import java.util.*;
  3 public class sort_examp{
  4  public static void main(String[] args)
  5  {
  6   Integer[] num={49,38,65,97,76,13,27,49,78,34,12,64,1};
  7   //insertsort(num);
  8   //selectsort(num);
  9   maopaosort(num);
 10    
 11    
 12  }
 13  
 14 //直接插入排序
 15  public  static void insertsort(Integer[] num)
 16  {
 17   System.out.println("排序之前:");
 18   for(int i=0;i<num.length;i++)
 19   {
 20    System.out.print(num[i]+" ");
 21   }
 22   System.out.println();
 23   //直接插入排序,从数组第二个位置开始
 24   for(int i=1;i<num.length;i++)
 25   {
 26    //待插入元素,从第二个元素开始.num[i]为前一组元素
 27    int insertnum=num[i];
 28    int j;
 29    for(j=i-1;j>=0;j--)
 30    {
 31        //将大于待插入元素的,值往后移1位,num[j]为后一组元素
 32        if(num[j]>insertnum)
 33      {num[j+1]=num[j];}else {
 34       break;
 35      }
 36     
 37    }
 38    //直到不存在num[j]>insertnum的时候,不移动位置
 39    num[j+1]=insertnum;
 40    System.out.println();    
 41        System.out.println("第:"+i+"轮排序");
 42        for (int k = 0; k < num.length; k++)
 43        {
 44            System.out.print(num[k]+" ");
 45     }
 46     
 47   }
 48   System.out.println();
 49         System.out.println("排序之后:");
 50         for (int i = 0; i < num.length; i++) 
 51         {
 52          System.out.print(num[i]+" ");
 53          }
 54    
 55  }
 56 //选择排序
 57  public static void  selectsort(Integer[] num)
 58  {
 59   System.out.println("排序之前:");
 60   for(int i=0;i<num.length;i++)
 61   {
 62    System.out.print(num[i]+",");
 63   }
 64   System.out.println();
 65   //i为排序结果的顺序号
 66   for(int i=0;i<num.length;i++)
 67   {
 68    //假定一个最小值min
 69    int min=num[i];
 70    //n存储最小值索引(位置)
 71    int n=i;
 72    //从第二个数开始比较,把每次比较出的最小值放到左边
 73    for(int j=i+1;j<num.length;j++)
 74    {
 75     if(num[j]<min)//找出最小值
 76     {
 77      //num[j]最小,将num[j]赋值给min,并记录num[j]原来的位置保存到n
 78      min=num[j];
 79      n=j;
 80       
 81     }
 82     //将最小值跟比较值交换位置,将num[i]放到num[j]的位置
 83     num[n]=num[i];
 84     //将最小值按顺序放到i的位置
 85     num[i]=min;
 86    }
 87     System.out.println();
 88     int l=i+1;
 89        System.out.println("第:"+l+"轮排序");
 90        for (int k = 0; k < num.length; k++)
 91        {
 92            System.out.print(num[k]+" ");
 93     }
 94   }
 95   System.out.println();
 96         System.out.println("排序之后:");
 97         for (int i = 0; i < num.length; i++) 
 98         {
 99          System.out.print(num[i]+" ");
100          }  
101    
102  }
103 //冒泡排序
104  public static void  maopaosort(Integer[] num)
105  {
106   System.out.println("排序之前:");
107   for (int i = 0; i < num.length; i++) 
108   {
109       System.out.print(num[i]+" ");
110   }
111    //冒泡排序
112   for (int i = 0; i < num.length; i++)
113   {
114       for(int j = 0; j<num.length-i-1; j++)
115       {
116        //这里-i主要是每遍历一次都把最大的i个数沉到最底下去了,没有必要再替换了
117           if(num[j]>num[j+1])
118           {
119                int temp = num[j];
120                num[j] = num[j+1];
121                 num[j+1] = temp;
122           }
123       }
124       System.out.println();
125     int l=i+1;
126        System.out.println("第:"+l+"轮排序");
127        for (int k = 0; k < num.length; k++)
128        {
129            System.out.print(num[k]+" ");
130     }
131        
132        
133   }
134    System.out.println();
135    System.out.println("排序之后:");
136     for (int i = 0; i < num.length; i++) 
137     {
138        System.out.print(num[i]+" ");
139     }
140  }
141   
142 }

 

posted @ 2015-08-21 21:37  郑树恒  阅读(298)  评论(0编辑  收藏  举报