当前位置:编程学习 > JAVA >>

简单排序算法

冒泡排序:
[java]  
import java.util.Arrays;  
  
  
public class Bubbling {  
  
    /** 
     * @param args 
     * 冒泡排序: 
     * 
         * 假设有 N 个数据需要排序,则从第 0 个数开始,依次比较第 0 和第 1 个数据,  
 
     *如果第 0 个大于第 1 个则两者交换,否则什么动作都不做,继续比较第 1 个第 2  
 
     *个…,这样依次类推,直至所有数据都“冒泡”到数据顶上。   
     * 冒泡排序的效率O(N*N),比较 N*N/2,交换 N*N/4;   
     * 
     */  
      
    public int[] result(int[] array){   //int型可以换成是Object,但数组元素必须实现compareto()方法。  
        if(array.length==0){  
            return array;  
        }else{  
            int length,temp;  
            length = array.length;  
              
            for(int i=1;i<length;i++){  
                for(int a=0;a<length-i;a++){  
                    if(array[a]>array[a+1]){  
                        temp =array[a];  
                        array[a]=array[a+1];  
                        array[a+1]=temp;  
                    }  
                }  
            }  
              
              
        }  
          
        return array;  
    }  
    public static void main(String[] args) {  
        int[] a =new int[5];  
        a[0]=1;  
        a[1]=5;  
        a[2]=3;  
        a[3]=0;  
        a[4]=6;  
        Bubbling bubbling = new Bubbling();  
        a=bubbling.result(a);  
        System.out.println(Arrays.toString(a));  
    }  
 
 
快速排序:
[java]  
public class QuickSort   
{  
  
    /** 
     * @them 快速排序 
     * 对冒泡排序的改进:首先选一个轴值,将待排序的数据分为两个独立的两部分,左侧小于轴值,右侧大于轴值 
     * 然后分别对这两部分重复上述部分,直到整个序列有序。 
     */  
    public static void main(String[] args)   
    {  
        quicksort qs = new quicksort();  
        int data[] = {44,22,2,32,54,22,88,77,99,11};  
        qs.data = data;  
        qs.sort(0, qs.data.length-1);  
        qs.display();  
    }  
  
}  
  
  
class quicksort  
{  
    public int data[];  
      
    private int partition(int sortArray[],int low,int hight)//划分  
    {  
        int key = sortArray[low];  
          
        while(low<hight)  
        {  
            while(low<hight && sortArray[hight]>=key)  
                hight--;  
            sortArray[low] = sortArray[hight];  
              
            while(low<hight && sortArray[low]<=key)  
                low++;  
            sortArray[hight] = sortArray[low];  
        }  
        sortArray[low] = key;  
        return low;  
    }  
      
    public void sort(int low,int hight)  
    {  
        if(low<hight)  
        {  
            int result = partition(data,low,hight);//把整体分成独立的两部分,返回轴值位置  
            sort(low,result-1);//左侧重复  
            sort(result+1,hight);//右侧重复  
        }  
          
    }  
      
    public void display()  
    {  
        for(int i=0;i<data.length;i++)  
        {  
            System.out.print(data[i]);  
            System.out.print(" ");  
        }  
    }  
}  
 
 
插入排序:
[java]  
import java.util.Arrays;  
  
  
public class InsertionSort {  
  
    /** 
     * @param args 
     * @author mayi 
     *  
     * 插入排序      是在部分数据有序的情况下,使用 OUT 标记第一个无序的数据,将  
 
        其提取保存到一个中间变量 temp 中去,使用 IN 标记空位置,依次比较 temp 中  
 
        的值与 IN‐1 的值,如果 IN‐值大于 temp 的值,则后移,直到遇到第一个比temp &nbs
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,