Java排序算法概述以及代码实现上

  1. 选择排序。算法:扫描整个列表,从中找出最小的元素然后和第一个元素互换位置;扫描从1到n-1的数组列表,从中找出最小元素,再和第二个元素交换位置……与此类似,在对列表进行第i次扫描时,,该算法从最后n-i 个元素中找出最小元素,放在他应该放置的位置,整个列表进行了n-1次后,就排好序了。
     1 //选择排序
     2 public class Solution {
     3     /*
     4      * @param A: an integer array
     5      * @return: 
     6      */
     7     public void sortIntegers(int[] a) {
     8         // write your code here
     9         int min = 0;
    10         int n = a.length;
    11         for(int i = 0;i<n-1;i++){
    12             min = i;
    13             for(int j = i+1;j<n;j++){
    14                 if(a[j]<a[min])
    15                     min = j;
    16             int temp;  
    17             temp=a[i];  
    18             a[i]=a[min];  
    19             a[min]=temp;    
    20             }
    21         }
    22     }
    23 }
  2. 冒泡排序。算法简述:数组元素就像是水里的泡泡一样,一个一个向上浮,具体算法是比较表中的相邻元素,如果 逆序就交换位置,重复多次后,最大的元素就沉到最后了,此时检查逆序的长度-1,使得第二大元素沉到倒数第二个位置去,以此类推,等到n-1 遍的时候,整个数组序列就有序了。
     1 //冒泡排序
     2 public class Solution {
     3     /*
     4      * @param A: an integer array
     5      * @return: 
     6      */
     7     public void sortIntegers(int[] a) {
     8         // write your code here
     9         int n = a.length;
    10         for (int i=0;i<n-1;i++)  
    11             for (int j=0;j<n-i-1;j++)  
    12             {  
    13                 if (a[j]>a[j+1]) // 这里是从小到大排序,如果是从大到小排序,只需将“<”换成“>”  
    14                 {  
    15                     int temp;  
    16                     temp=a[j];  
    17                     a[j]=a[j+1];  
    18                     a[j+1]=temp;  
    19                 }  
    20             }  
    21     }
    22 }
  3. 插入排序。通过迭代的方式,首先保证前两个元素有序,然后将第三个元素插入到里面去,具体操作:前n-i个元素有序,将,第n-i+1个元素插入到有序序列中去,从右向左扫描前面这个有序的数组,找到第一个小于或等于第n-i+1个元素的元素,将第n-i+1个元素插入到该元素的后面去。
     1 //插入排序
     2 public class Solution {
     3     /*
     4      * @param A: an integer array
     5      * @return: 
     6      */
     7     public void sortIntegers(int[] a) {
     8         // write your code here
     9         int v = 0;
    10         int  j;
    11         int n = a.length;
    12         for(int i = 1;i<n;i++){
    13             v = a[i];
    14             j = i-1;
    15             while(j>=0&&a[j]>v){
    16                     a[j+1] = a[j];
    17                     j--;
    18             }
    19             a[j+1] = v;
    20         }
    21     }
    22 }

     

posted @ 2017-10-27 16:52  莫空城  阅读(204)  评论(0)    收藏  举报