[算法天天练]选择排序法

#include<stdio.h>

void show(int arr[], int length)
{
	for(int i=0; i<length; i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
}

void _swap(int *a, int *b)
{
	int tmp = *a;
	*a = *b;
	*b = tmp;
}

void SelectSort(int arr[], int length)
{
	size_t i,j;
	int min;

	for(i=0; i<length-1; i++)
	{
		//假设arr[i]为最小的数
		min = arr[i];

		//通过循环获取数组中剩余数中的最小数
		for(j=i+1; j<length; j++)
		{
			if(min > arr[j])
			{
				_swap(&min, &arr[j]);
			}
		}

		//将最小的数放到正确的位置
		if(arr[i] != min)
		{
			 _swap(&arr[i],&min);
		}
	}
}

int main()
{
	int arr[10] = {2,1,5,4,3,9,8,7,6,0};
	SelectSort(arr,10);
	show(arr, 10);
	return 0;

}

  

时间: 2024-10-10 06:47:32

[算法天天练]选择排序法的相关文章

[算法天天练]选择排序

选择排序 #include <iostream> using namespace std; void SelectSort(int data[], int ilen) { int temp; int iIndex = 0; for(int i=0; i<ilen-1; i++) { iIndex = i; for(int j=i+1; j<ilen; j++) { if(data[j]<data[iIndex]) { iIndex = j; } } if(iIndex !=

算法之旅 | 选择排序法

算法之旅 | 选择排序法 HTML5学堂-码匠:数据快速的计算与排序,与前端页面性能有直接的关系.由于排序的算法有很多,在本次"算法系列"的分享当中,我们先从简单易上手的选择排序法开始,其它的排序算法会随后陆续跟大家一起分享. 算法的基本概念 算法是什么,它有何作用 为解决一个问题而采取的方法和步骤,称为算法. 我们可以把算法看成一本"福字剪纸教程",其中每一种算法就是剪纸教程中的一种包含"固定步骤"的剪纸方法,使用者只要按照步骤进行剪纸,就可以

算法 之 简单选择排序法

简单排序算法:每一趟选择最小的与该趟第一个数交换,而不动其他数. 例如  3,8,2,5,7第1趟:2与3交换  2,8,3,5,7 第2趟:3与8交换  2,3,8,5,7 第3趟:5与8交换  2,3,5,8,7 第4趟:7与8交换  2,3,5,7,8 关键点在于:保持其他数不动,只把索引为0的数(第一个数)与最小的数作交换. 时间复杂度 O(n^2) $a = array(3,8,2,5,7,1,6,4); $index = 0; for($j = 0 ; $j < count($a)-

[算法天天练]桶排序

[问题]:如果有一组数据a[]={0,9,2,3,4,5,3,5,2,8},对它进行从小到大的顺序排列 #include <stdio.h> void BucketSort() { int i, j; int a[] = {0,9,2,3,4,5,3,5,2,8}; int b[10] = {0}; int iaSize = sizeof(a)/sizeof(int); int ibSize = sizeof(b)/sizeof(int); for(i=0; i<iaSize; i++)

算法大神之路----排序(选择排序法)

选择排序法,顾名思义,就是把特定的数据选择出来进行排序. 选择排序法有两种方式 在所有的数据中,当由大到小排序,那么就将最大值放到第一个位置 如果由小到大排序,那么就将最小值放到第一个位置 以由小到大排序举例,当排序时候,扫描整个数据,拿第一个依次与其他做比较,如果其他数据比第一个大,或者相等,那么就不交换,如果其他数据比第一个数小,那么就交换二者的位置,扫描结束后,则从第二个数开始,依次扫描. 方法分析 无论是最坏还是最好情况,甚至是平均情况下,都需要对全部数据进行扫描,找到最大或最小值,因此

【JAVA】算法排序(一)——选择排序法

一.前言 前文中我们总览了一下所有的排序的算法,下面小编就和给大家分享一下选择排序算法. 二 .核心知识点 选择排序的核心思想是我是最大的. 选择排序(Selection sort)是一种简单直观的排序算法.无论是那一种语言的教科书,都会运用到选择排序算法来比较大小.虽然代码就几行,但是如何理解其中的思想是很重要的.下面是小编自己的一些认识: 工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. eg:比如从大到小,先随便取一个值

java冒泡算法和选择排序法

1 package test.auto; 2 3 import java.util.Arrays; 4 5 import org.apache.bcel.generic.FieldGenOrMethodGen; 6 7 public class Maopao0807{ 8 9 public static void main(String[] args) { 10 //冒泡,每个相邻进行比较 11 int a[]={ 6, 5, 3, 1, 8, 7, 2, 4 , 0}; 12 for (int

php 四种基础算法 ---- 选择排序法

2. 选择排序法: 选择排序法思路: 每次选择一个相应的元素,然后将其放到指定的位置 代码: function select_sort($arr) {//实现思路 双重循环完成,外层控制轮数,当前的最小值.内层 控制的比较次数    //$i 当前最小值的位置, 需要参与比较的元素    for($i=0, $len=count($arr); $i<$len-1; $i++) {        //先假设最小的值的位置        $p = $i;        //$j 当前都需要和哪些元素

排序算法: 选择排序法

选择排序法:在排序数组中,选出最小(或者最大)的一个数与第1个位置的数交换:然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止. 实现思路: 1,每次先找到最小数(最大数); 2,第i趟找到最小数和第i个数组互换; 3,重复(1)(2),直到最后排序成功;   0 1 2 3 4 5 6 7   6 10 4 90 52 77 8 3 0  3  10 4  90   52 77  8  6  1  3 4