排序算法-选择排序(Java)

选择排序

选择排序也属于内部排序法,是从想要排序的数据中,按指定的规则选出某一个元素,在依据规定交换位置后达到排序的目的

选择排序的基本思想是:

  1. 第一次从arr[0]~arr[n-1]中选出最小值,与arr[0]交换位置
  2. 第二次从arr[1]~arr{n-1}中选出最小值,与arr[1]交换位置
  3. 第三次从arr[2]~arr[n-1]中选出最小值,与arr[2]交换位置
  4. 以此类推下去进行交换位置
  5. 总共通过n-1次交换,最后便得到一个有序序列

选择排序的思维分析图:
在这里插入图片描述
选择排序的思路图解
假如原始的数组为:101,34,119,1
在这里插入图片描述
接下来上代码

	public static void selectSort(int [] arr){
		//arr.length - 1是因为最后一个元素不需要比较,因为这个元素后面没有值了
		for(int i = 0; i < arr.length - 1; i++){
			int minIndex = 0;//最小值的索引
			int min = arr[i];//假设当前数组中的值就是最小值
			for(int j = 0; j < arr.length ; j++){//循环结束后min就是最小值
				if(min > arr[j]){//如果当前最小值比后面元素大,则需要交换元素值
					min = arr[j];
					minIndex = j;//并记录元素下标
				}
			}
			//条件不等证明已经进行了数据交换
			if(minIdex != i){
				arr[minIndex] = arr[i];//将当前元素赋值到刚才确定的最小元素的索引位置
				arr[i] = min;//将最小元素赋值给当前元素
			}
		}
		
	}

以上就是选择排序的代码,主要就是在与每一次循环都是找到最小的值,在放到外层循环的当前元素的位置,如果有数据交换则赋值替换位置,没有则不换位置,继续下一次循环

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章