[詳細] Javaは選択ソートを実装しています

1。概要

  選択的ソートとは何ですか?

アイデア:各パスは、並べ替えるレコードから最小の要素を選択して並べ替えられたシーケンスの最後に配置し、次に残りのシーケンスから最小の要素を選択して、シーケンス全体がソート済み。

注意点:

   ①比較パスの数:シーケンスは2番目の要素から始まり、最初の要素と比較され、最後の要素が2番目の要素と比較されます。たとえば、1、3、2 1と3が比較され、1と2が比較され、最初の比較ラウンドが終了します。3が2と再度比較され、位置が交換され、2番目の比較ラウンドが終了します。したがって、シーケンス比較全体のパス数はn-1であり、nはarr.lengthです。

   ②内側のループは、配列の2番目の要素から最後の要素まで始まります

2.グラフィック

        SelectionSort

3.コードの実装

import java.util.Arrays;

/**
 * 选择排序
 * @author Administrator
 *
 */
public class SelectSort {
	public static void main(String[] args) {
		int[] arr = {2,1,4,3};
		selectionSort(arr);
		for(int i = 0;i < arr.length;i++) {
			System.out.println(arr[i]);
		}
	}
	
	private static void selectionSort(int[] array) {
		// 选择排序的躺数 因为是两两比较的,比如1,3,2 3先和1比较,1最小,1再和2比较第一趟结束;然后3再和2比较;所以是2次
		for(int i = 0;i < array.length - 1;i++) {
			// 设置最小元素下标
			int minIndex = i;
			// 从第二个元素开始往后
			for(int j = i + 1;j < array.length;j++) {
				if(array[minIndex] > array[j]) {
					minIndex = j;
				}
			}
			// 一次比较结束  内层for循环已经出现比较的结果
			// 交换位置
			if(minIndex != i) {
				int temp = array[i];
				array[i] = array[minIndex];
				array[minIndex] = temp;
			}
		}
	}
}

4.時間計算量分析

   2つのforループ、時間計算量が実行するのに最悪の回数、O(n2)

 

おすすめ

転載: blog.csdn.net/Sunshineoe/article/details/114828671