Java-选择排序

public static void selectSort(int[] a){
	if(a == null){
		return;
	}

	int n = a.length;
	int minIndex = 0;

	//从无序区中选一个最小的数放在有序区的最后,初始时认为整个数组都是无序的,选一个最小的数放到第一位
	for(int i=0; i<n; i++){
		minIndex = i;
		for(int j=i+1; j<n; j++){
			if(a[j]<a[minIndex]){
				minIndex = j;
			}
		}

		//交换位置,把无序区中最小的元素放到有序区的最后
		int temp = a[i];
		a[i] = a[minIndex];
		a[minIndex] = temp;
	}

}

直接选择排序和插入排序类似,都将数据分为有序区和无序区。

二者不同的是,插入排序是将无序区的第一个元素直接插入到有序区中去,初始时默认第一个元素是有序的,一步步缩小无序区范围。

选择排序是先在无序区中选出一个最小的元素,然后放到有序区的后面第一位置上。

同时,选择排序也是一种不稳定的排序,例如,4,3,4,1,2这个序列,第一次交换时会将第一个4和1交换,那么原序列中两个4的相对顺序就被破坏啦。

时间: 2024-10-12 17:35:52

Java-选择排序的相关文章

java选择排序

/** * Created by rabbit on 2014-5-9. */ class ArrayTest2 {     public static void SelectSort(int [] arr) //定义选择排序的方法     {         for (int x=0;x<arr.length;x++)         {             for (int y=0;y<arr.length-1;y++)             {                 if

java选择排序和冒泡排序

public class Choose{ public static void main(String[] args){  int[] arr = {4,6,7,3,1,6};   Select a = new Select();   a.sort1(arr);   System.out.println("选择排序后:");   for(int i=0;i<arr.length;i++){    System.out.print(arr[i]);    }    a.sort2(

Java选择排序算法

package com.jckb; /**选择排序 * * @author gx *算法原理: *第一个数和后面每个数进行比较,如果大于后面的数就进行位置交换, *第一次比较结束后得到了最小值 */ public class ChoiceSort { public static void main(String[] args) { int []arr={34,19,11,109,3,56}; for(int i =0;i<arr.length-1;i++){ for(int j=i+1;j<a

Java选择排序,插入排序,快速排序

public class Test { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5 }; // 选择排序(a); // 插入排序(a); quicksort(a, 0, a.length - 1); System.out.print("排序后:"); for (int n : a) { System.out.print(n + " "); } } static void 选择排

java 选择排序与冒泡排序

选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~R[n-1]中选取最小值,与R[0]交换;第二次从R[1]~R[n-1]中选取最小值,与R[1]交换;...., 第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换;.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换;总共通过n-1次,得到一个按排序码

java选择排序下标交换和下标对应的值的交换

class a4 { public static void main(String[] args) { int [] arr = {1, 8, 3, 6, 5, 2}; printNumber(arr); sort2(arr); printNumber(arr); } public static void swap(int[] arr, int a, int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } public stat

java算法(一) 直接选择排序

一.基本概念 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(注:要把最大最小的元素和起始的元素交换), 然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 二.算法特点 是否稳定: false 平均时间复杂度:O(n^2) 最差时间复杂度:O(n^2) 最优时间复杂度:O(n^2) package com.jiafuwei.java; /** * java 选择排序 * @author jfw * */ public

选择排序的3种语言实现方法(C java python)

1.选择排序的思路是:遍历数组,第一遍找出所有成员的最小值,放到数组下标为0的位置,第二遍从剩余内容中,再次找出最小值,放到数组下标为1的位置,以此类推,遍历完成所有的数组内容,最后结果就是:数组是按照从小到大顺序进行排序的. 2.按照C语言.java.python的顺序,分别实现如下,在对应编译平台上都是编译通过的: C语言版本: #include <stdio.h> int main() { int i; int j; int temp; int origin[] = {2,1,4,3,5

JavaScript ,Python,java,Go系列算法之选择排序

常见的内部排序算法有:插入排序.希尔排序.选择排序.冒泡排序.归并排序.快速排序.堆排序.基数排序等.用一张图概括: 选择排序 选择排序是一种简单直观的排序算法,无论什么数据进去都是O(n2) 的时间复杂度.所以用到它的时候,数据规模越小越好.唯一的好处可能就是不占用额外的内存空间了吧.通俗来说就是你们中间谁最小谁就出列,站到队列的最后边,然后继续对着剩余的无序数组说你们中间谁最小谁就出列,站到队列的最后边,一直到最后一个,继续站到最后边,这样数组就有了顺序,从小到大. 1.算法步骤 首先在未排

Java学习 (七)、数组,查找算法,二分查找法,冒泡排序,选择排序,插入排序

一.常用数组查找算法 工作原理:它又称为顺序查找,在一列给定的值中进行搜索,从一端的开始逐一检查每个元素,知道找到所需元素的过程. 例1:查找指定的数在数组中出现的位置,找到返回下标,找不到返回-1 1 import java.util.Scanner; 2 public class LinearSearch{ 3 public static void main(String []argas) 4 { 5 int [] array={10,100,90,65,80,92}; 6 System.o