注册 | 登录
欢迎注册会员

当前位置:首页 > 软件编程 > JAVA技术 > 正文

常见的java排序方法

来源:程序人生 【 】 浏览:2125 添加日期:2010-07-05 23:11:05 我要评论(0)
Java Code复制内容到剪贴板
  1. import java.util.Arrays;   
  2. public class Sort {   
  3.     
  4.  //冒泡排序(从头到尾排)   
  5.  public static void bubbleSort(int[] arrays)   
  6.  {   
  7.   //第一次循环从第一个元素开始,到倒数第二个元素   
  8.   for(int i=0;i<>1;i++)   
  9.   {   
  10.    for(int j=1;j
  11.    {   
  12.     if(arrays[j-1]>arrays[j])   
  13.     {   
  14.      int temp=arrays[j-1];   
  15.      arrays[j-1]=arrays[j];   
  16.      arrays[j]=temp;   
  17.     }   
  18.    }   
  19.   }   
  20.  }   
  21.     
  22.  //选择排序   
  23.     
  24.  public static void selectSort(int[] arrays)   
  25.  {   
  26.   //第一次循环从第一个元素开始,到倒数第二个元素   
  27.   for(int i=0;i<>1;i++)   
  28.   {   
  29.    //标识当前的最小元素的位置   
  30.    int ind=i;   
  31.    for(int j=i+1;j
  32.    {   
  33.     if(arrays[j]
  34.     {   
  35.      ind=j;   
  36.     }   
  37.    }   
  38.    if(ind!=i)   
  39.    {   
  40.     int temp=arrays[ind];   
  41.     arrays[ind]=arrays[i];   
  42.     arrays[i]=temp;   
  43.    }   
  44.   }   
  45.  }   
  46.     
  47. //插入排序   
  48.  public static void insertSort(int[] arrays)   
  49.  {   
  50.   //第一次循环从第二个元素开始,到最后一个元素   
  51.   //arrays[i]是当前需要插入的元素   
  52.   for(int i=1;i
  53.   {   
  54.    //当前已经排好序的数组长度是i   
  55.    int temp=arrays[i];   
  56.    int ind=i;   
  57.    for(int j=i-1;j>=0;j--)   
  58.    {   
  59.     //如果找到了比arrays[j]小的,那么就将已经排好序的数组的当前位置后的所有元素后移一位,并将需要插入的元素放入该位置j   
  60.     if(temp
  61.     {   
  62.      arrays[j+1]=arrays[j];   
  63.      ind=j;   
  64.     }   
  65.     else  
  66.     {   
  67.      break;   
  68.     }   
  69.    }   
  70.    arrays[ind]=temp;   
  71.   }   
  72.  }   
  73.     
  74.  //快速排序   
  75.  public static void quickSot(int[] arrays,int left,int right)   
  76.  {   
  77.   if(left>=right)   
  78.   {   
  79.    return;   
  80.   }   
  81.   int compInd=left;//选取第一个数作为比较的基石   
  82.   int i=left;   
  83.   int j=right;   
  84.   while(i
  85.   {   
  86.   for(;j>=i;j--)   
  87.   {   
  88.    if(arrays[j]
  89.    {   
  90.     int temp=arrays[j];   
  91.     arrays[j]=arrays[compInd];   
  92.     arrays[compInd]=temp;   
  93.     compInd=j;   
  94.     break;   
  95.    }   
  96.   }   
  97.   for(;i<=j;i++)   
  98.   {   
  99.    if(arrays[i]>arrays[compInd])   
  100.    {   
  101.     int temp=arrays[i];   
  102.     arrays[i]=arrays[compInd];   
  103.     arrays[compInd]=temp;   
  104.     compInd=i;   
  105.     break;   
  106.    }   
  107.   }   
  108.   }   
  109.   quickSot(arrays,left,compInd-1);   
  110.   quickSot(arrays,compInd+1,right);   
  111.  }   
  112.     
  113.  //归并排序(两个有序的数组)   
  114.  public static int[] merger(int[] a,int [] b)   
  115.  {   
  116.   int[] result=new int[a.length+b.length];   
  117.   int ind=0;   
  118.   int ind1=0;   
  119.   int ind2=0;   
  120.   while(ind1<>
  121.   {   
  122.    if(a[ind1]
  123.    {   
  124.     result[ind++]=a[ind1++];   
  125.    }   
  126.    else  
  127.    {   
  128.     result[ind++]=b[ind2++];   
  129.    }   
  130.   }   
  131.   while(ind1
  132.   {   
  133.    result[ind++]=a[ind1];   
  134.    ind1++;   
  135.       
  136.   }   
  137.   while(ind2
  138.   {   
  139.    result[ind++]=b[ind2];   
  140.    ind2++;   
  141.   }   
  142.   return result;   
  143.  }   
  144.     
  145.  //希尔排序  steps为增量数组,前面的元素大于后面的元素,并且最后一个元素值为1 ,例如{ 5, 3, 1 }   
  146.  public static void shellSort(int[] arrays,int[] steps)   
  147.  {   
  148.   for(int step:steps)   
  149.   {   
  150.    for(int i=0;i
  151.    {   
  152.     for(int j=i;j
  153.     {   
  154.      //选择排序   
  155.      int ind=j;   
  156.      for(int k=j+step;k
  157.      {   
  158.       if(arrays[k]
  159.       {   
  160.        ind=k;   
  161.       }   
  162.      }   
  163.      if(ind!=j)   
  164.      {   
  165.       int temp=arrays[ind];   
  166.       arrays[ind]=arrays[j];   
  167.       arrays[j]=temp;   
  168.      }    
  169.        
  170.     }   
  171.    }   
  172.   }   
  173.  }   
  174.     
  175.  public static void main(String[] args) {   
  176.   int[] a=new int[]{6,3,13,8,5,10,12,16,4,6};   
  177. //  bubbleSort(a);   
  178. //  selectSort(a);   
  179. //  insertSort(a);   
  180. //  quickSot(a,0,a.length-1);   
  181.   shellSort(a,new int[]{ 531 });   
  182.   System.out.println(Arrays.toString(a));   
  183.  }   
  184.     
  185. }  

你浏览的文章是 - 《常见的java排序方法》!
文章出处:https://www.procedurelife.com/content/bkkcb.html
100% (1)
0% (0)
评论0
游客
1 2