Hark的数据结构与算法练习之简单选择排序

/*
 * 简单选择排序
 */
public class SimpleSort {
	public static void main(String[] args) {
		int[] arrayData = { 5, 9, 6, 7, 4, 1, 2, 3, 8 };
		SimpleSortMethod(arrayData);
		for (int integer : arrayData) {
			System.out.print(integer);
			System.out.print(" ");
		}
	}

	/*
	 * 时间复杂度 :因为是双循环求解,所以是o(n^2)
	 * 空间复杂度:使用的临时空间大小是一个常量,而不是与n有关系,所以空间复杂度是O(1)
	 * 说明:
	 * 其实与冒泡的排序大体是相似的,不同之处是冒泡判断出两个数大小后,直接进行交换;而简单选择排序是找出最大/最小的数后,再进行排序
	 */
	public static void SimpleSortMethod(int[] arrayData) {
		int maxIndex, i, j,valueTemp;
		for (i = 0; i < arrayData.length; i++) {
			maxIndex = i;
			for (j = i; j < arrayData.length; j++) {
				if(arrayData[j] > arrayData[maxIndex])
				{
					//在这里,只记录最大值的索引,在后边那个if中进行数值的交换
					maxIndex = j;
				}
			}
			if(i!=maxIndex)
			{
				valueTemp= arrayData[i];
				arrayData[i]= arrayData[maxIndex];
				arrayData[maxIndex] = valueTemp;
			}
		}
	}
}

  

时间: 2024-10-09 04:29:28

Hark的数据结构与算法练习之简单选择排序的相关文章

算法一之简单选择排序

一.  选择排序的思想 选择排序的基本思想是:每一趟在n-i+1(i=1,2,-n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录.基于此思想的算法主要有简单选择排序.树型选择排序和堆排序. 简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换:第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换:以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕.

常见排序算法导读(3)[简单选择排序]

这一节将介绍简单选择排序(Simple Selection Sort). 在介绍简单排序算法之前,先给出排序的确切定义,并简单介绍一下排序算法的稳定性. 排序的确切定义 假设含有n个对象的序列为{R[0], R[1], ..., R[n-1]}, 其对应的关键字(key)序列为{K[0], K[1], ..., K[n-1]}. 所谓排序, 就是确定0, 1, ..., n-1的一种排列p[0], p[1], ..., p[n-1], 使各个关键字满足如下的非递减(升序)或非递增(降序)关系:

排序算法篇--之简单选择排序

简单选择排序,就是执行n-i次比较,然后从n-i+1个数据中选择最小的值,如果最小值不是第i(1=<i<=n)个,则和第i个交换. 1 <?php 2 $arr = array(9,5,4,8,7,6,0,3,2,1); 3 4 /** 5 * 返回经过简单选择排序算法排序后的数组 6 * @param $array array 要进行排序的数组 7 * return array 进过排序后的数组 8 */ 9 function SelectSort($array){ 10 11 for

Java排序算法(二):简单选择排序

[基本思想] 在要排序的一组数中.选出最小的一个数与第一个位置的数交换:然后在剩下的数中再找出最小的与第二个位置的数交换,如此循环至倒数第二个数和最后一个数比較为止. 算法关键:找到最小的那个数.并用变量记住它的下标. [java实现] public class SimpleSelectionSort { public static void main(String[] args) { int[] arr = { 9, 1, 5, 8, 3, 7, 4, 6, 2 }; System.out.p

数据结构与算法系列十三(选择排序)

1.引子 1.1.为什么要学习数据结构与算法? 有人说,数据结构与算法,计算机网络,与操作系统都一样,脱离日常开发,除了面试这辈子可能都用不到呀! 有人说,我是做业务开发的,只要熟练API,熟练框架,熟练各种中间件,写的代码不也能“飞”起来吗? 于是问题来了:为什么还要学习数据结构与算法呢? #理由一: 面试的时候,千万不要被数据结构与算法拖了后腿 #理由二: 你真的愿意做一辈子CRUD Boy吗 #理由三: 不想写出开源框架,中间件的工程师,不是好厨子 1.2.如何系统化学习数据结构与算法?

Hark的数据结构与算法练习之地精(侏儒)排序

算法说明 地精排序是交换排序的一种,它是冒泡排序的一种改良,我感觉和鸡尾酒排序挺像的. 不同之处是鸡尾酒排序是从小到大,然后再从大到小切换着排序的.而地精排序是上来先从小到大排序,碰到交换到再从大到小,接着再从小到大进行排序. 举个例子: 对8,6,4,5,1进行升序排序 1.8与6交换,结果是 {6,8,4,5,1} 2.8与4交换,结果是 {6,4,8,5,1} 3.4与6交换,结果是 {4,6,8,5,1} 4.5与8交换,结果是 {4,6,5,8,1} 5.6与5交换,结果是 {4,5,

算法3-排序-简单选择排序

基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换: 然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止. publicclass selectSort { public selectSort(){ int a[]={1,54,6,3,78,34,12,45}; int position=0; for(int i=0;i<a.length;i++){ int j=i+1; position=i; int temp=a[i]; for(;j

python数据结构与算法第九天【选择排序】

1.选择排序的原理 2.代码实现 def selection_sort(alist): n = len(alist) # 需要进行n-1次选择操作 for i in range(n-1): # 记录最小位置 min_index = i # 从i+1位置到末尾选择出最小数据 for j in range(i+1, n): if alist[j] < alist[min_index]: min_index = j # 如果选择出的数据不在正确位置,进行交换 if min_index != i: al

数据结构和算法:Python实现选择排序

程序如下: def selection_sort(alist): n=len(alist) for i in range(n-1):#到n-1停止是因为最后一个肯定是最大的无须比较 min_index=i for k in range(i+1,n):#到n停止是因为到最后一个不一定是最小的,所以需要每一个都进行比较 if(alist[k]<alist[min_index]): min_index=k alist[i],alist[min_index]=alist[min_index],alist