选择排序(JAVA)

算法


  选择排序与冒泡排序一样都是最朴素简单而又经典的排序算法,效率相对快速排序、堆排序等较低。其思路是,一共进行n-1趟排序,每次筛选出最大(降序)或者最小(升序)的元素,将该元素与位置为i的元素进行交换(i表示趟数),当第n-1趟结束时,排序完成。由n-1趟,每趟比较n-i次,容易得出其时间复杂度为o(n*n),效率确实比较低下。

Codes


package com.fairy.InnerSort;

import java.util.Scanner;
/**
 * 选择排序
 * @author Fairy2016
 *
 */
public class SelectSort {
    
    public static void sort(int a[], int n) {
        int min;//记录每趟查找的最小元素位置
        for(int i = 1; i <= n-1; i++) {
            min = i;
            //寻找第i趟的最小元素
            for(int j = i+1; j <= n; j++) {
                if(a[min] > a[j]) {
                    min = j;
                }
            }
            //交换a[min]与a[i],完成一趟排序
            a[0] = a[min];
            a[min] = a[i];
            a[i] = a[0];
        }
    }

    public static void Print(int a[], int n) {
        for(int i = 1; i <= n; i++) {
            System.out.print(a[i]+" ");
        }
    }

    public static void main(String args[]) {
        int n;
        int a[];
        Scanner scanner = new Scanner(System.in);
        while(scanner.hasNext()) {
            n = scanner.nextInt();
            if(n > 0) {
                a = new int[n+1];
                for(int i=1; i <= n; i++) {
                    a[i] = scanner.nextInt();
                }
                sort(a, n);
                Print(a, n);
            }
        }
        scanner.close();
    }
}

你可能感兴趣的:(选择排序(JAVA))