码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序(直接选择排序、堆排序)

时间:2017-02-05 13:52:04      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:.com   log   堆排序   .so   sort   pac   heapsort   stat   tar   

一、直接选择排序

package algorithm.sort.compare.choose;
 
import java.util.Arrays;
 

public class DirectChooseSort{
    public static void main ( String[] args ){
        int[] arrayA = new int[] { 11, 213, 134, 65, 77, 78, 23, 43 };
        directChooseSort (arrayA);
        System.out.println (Arrays.toString (arrayA)); 
    }
   
   
   
   
    private static void directChooseSort ( int[] array ){
        for ( int i = 0; i < array.length; i++ ){
            int index = i;
            for ( int j = i + 1; j < array.length; j++ ){
                if (array[index] > array[j])
                         index = j;              
            }
            if (i != index){
                int temp = array[i];
                array[i] = array[index];
                array[index] = temp;
            }
        }
    }
 
   
   
   
}

 

 

二、堆排序

package algorithm.sort.compare.choose;
 
import java.util.Arrays;
 
 
public class HeapSort {  
    
    public static void main(String[] args) {     
        int[] arrayA = new int[] { 213, 134, 65, 77, 78, 23, 43 };
        method(arrayA, 0, arrayA.length);
        System.out.println (Arrays.toString (arrayA));
    }
 
        
 
   
    private static void method( int[] array, int start, int len ){
        int pos = ( len - 1 ) / 2;
        for ( int i = pos; i >= 0; i-- ){
            int tmp = array[start + i];
            int index = i * 2 + 1;
            while (index < len){
                if (index + 1 < len && array[start + index] < array[start + index + 1]) // 从小到大              
                    index += 1;           
                if (tmp < array[start + index]){ // 从小到大                
                    array[start + i] = array[start + index];
                    i = index;
                    index = i * 2 + 1;
                }
                else             
                    break;              
            }
            array[start + i] = tmp;
        }
        for ( int i = 0; i < len; i++ ){
            int temp = array[start];
            array[start] = array[start + len - 1 - i];
            array[start + len - 1 - i] = temp;
            // 再一次
            int post = 0;
            int tmp = array[start + post];
            int index = 2 * post + 1;
            while (index < len - 1 - i){
                if (index + 1 < len - 1 - i && array[start + index] < array[start + index + 1]) // 从小到大              
                    index += 1;              
                if (tmp < array[start + index]) {// 从小到大               
                    array[start + post] = array[start + index];
                    post = index;
                    index = post * 2 + 1;
                }
                else              
                    break;              
            }
            array[start + post] = tmp;
        }
    }
        
        
   
   
}
 

 

选择排序(直接选择排序、堆排序)

标签:.com   log   堆排序   .so   sort   pac   heapsort   stat   tar   

原文地址:http://www.cnblogs.com/chen-yonghai/p/6367411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!