C语言之选择排序
选择法排序是相对好理解的排序算法。假设要对含有n个数的序列进行升序排列,算法步骤是:
1、从数组存放的n个数中找出最小数的下标(算法见下面的“求最值”),然后将最小数与第1个数交换位置;
2、除第1个数以外,再从其余n-1个数中找出最小数(即n个数中的次小数)的下标,将此数与第2个数交换位置;
3、重复步骤1 n-1趟,即可完成所求。
好了,接下来看代码:
#include <stdio.h>
#include <stdlib.h>
#define n 10
int main()
{
  	 int a[n],i,j,k,t;
  	 printf("随机产生10个100以内的数:\n");
	 for(i=0;i<n;i++)
	 {
	 	a[i] = rand()%100;
	 	printf("%d\n",a[i]);
	 }
	 printf("输出:\n");
	 for(i=0;i<n-1;i++)         /*处理n-1趟*/
	 {
	 	 k = i;      /*总是假设此趟处理的第一个(即全部数的第i个)数最小,k记录其下标*/
	     for(j=i+1;j<n;j++)
		 {
	         if(a[j] < a[k])
			 	k = j;
		 }
	     if (k != i)
		 {
			 t = a[i];
			 a[i] = a[k];
			 a[k] = t;
		 }
	 }
	 for(i=0;i<n;i++)
	    printf("%d\n",a[i]);
	    return 0 ;
}
运行结果:
随机产生10个100以内的数字,排序后输出
C语言之选择排序的更多相关文章
- C语言实现选择排序算法
		
新人新气象,我又来了,C语言实现选择排序.很基础的东西,原理什么的就不扯了. #include <stdio.h> #include <stdlib.h> #include & ...
 - 排序算法c语言描述---选择排序
		
排序算法系列学习,主要描述冒泡排序,选择排序,直接插入排序,希尔排序,堆排序,归并排序,快速排序等排序进行分析. 文章规划: 一.通过自己对排序算法本身的理解,对每个方法写个小测试程序. 具体思路分析 ...
 - C语言-简单选择排序与直接插入排序的实现
		
/* Name: selectSort and insertSort Copyright: nyist Author: 润青 Date: 01/10/18 19:30 Description: 实现了 ...
 - C语言简单选择排序
		
#include <stdio.h> int main(int argc, char const *argv[]) { // 将数组按照从小到大排序 , , , , , }; int i, ...
 - 数据结构C语言实现----选择排序
		
选择排序 第一步:从一串无序数字串中选一个最小的与第一个数交换位置 第二步:从剩下的数字中选一个最小的与第二个数交换位置 第三步:从剩下的数字中选一个最小的与第三个数字交换位置 以此类推... 运行结 ...
 - 使用C语言和Java分别实现冒泡排序和选择排序
		
经典排序算法--冒泡和选择排序法 Java实现冒泡排序 基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素放到顶端,最终达到完全有序,首先看个动图: 我们要清楚 ...
 - 史上最详细的C语言和Python的选择排序算法
		
未经同意,请勿转载!如有收货,请留一赞,不胜感激! 同时欢迎加入我们的qq交流群:326079727 话不多说上代码: C语言: //选择排序走起 //原理:吃透原理再去实现,选择排序也是类似于冒泡排 ...
 - 简单选择排序(Simple Selection Sort)的C语言实现
		
简单选择排序(Simple Selection Sort)的核心思想是每次选择无序序列最小的数放在有序序列最后 演示实例: C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp) 原创文章, ...
 - 冒泡排序和选择排序(Go语言实现)
		
冒泡排序和选择排序是排序算法中比较简单和容易实现的算法.冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端.而选择排序的思想也很直观:每一次排序 ...
 
随机推荐
- 凸函数与Jensen不等式
			
这个是在凸优化里面看的,在EM算法中看有用到,所以用latex写了篇回忆用的小短文,现在不会把latex产生的pdf怎么转变成放到这里的内容. 所以我选择直接贴图. 这个pdf可以在我的资源里找到. ...
 - ormlite介绍一
			
概述 ORMlite是类似hibernate的对象映射框架,主要面向java语言,同时,是时下最流行的android面向数据库的的编程工具. 官方网站:http://ormlite.com ...
 - (SQL Server)有关T-SQL的10个好习惯
			
转自 http://www.cnblogs.com/CareySon/archive/2012/10/11/2719598.html 1.在生产环境中不要出现Select * 这一点我想大家已经是比较 ...
 - 带吸附效果的ViewPager(二)
			
上篇实现了一个简单的吸附效果,那么这篇我们来实现上篇中所示的360软件详情页(带viewpager)的效果!先来参观下本篇所实现的效果图: 了解了上一篇的实现过程,那么本篇的效果无非是修改一下布局,将 ...
 - Cocos2D iOS之旅:如何写一个敲地鼠游戏(十):创建游戏逻辑
			
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...
 - 解决android 大图OOM的两种方法
			
最近做程序中,需要用到一张大图.这张图片是2880*2180大小的,在我开发所用的华为3C手机上显示没有问题,但是给米3装的时候,一打开马上报OOM错误.给nexus5装,则是图片无法出来,DDMS中 ...
 - Leetcode_38_count-and-say
			
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41257397 The count-and-say sequ ...
 - javascript之数组对象与数组常用方法
			
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
 - 海量数据挖掘MMDS week2: Nearest-Neighbor Learning最近邻学习
			
http://blog.csdn.net/pipisorry/article/details/48894963 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
 - 17_Android中Broadcast详解(有序广播,无序广播)最终广播,Bundle传递参数,传递参数的时候指定权限
			
 1 Broadcast是Android中的四大组件之一,他的用途很大,比如系统的一些广播:电量低.开机.锁屏等一些操作都会发送一个广播. 2 广播被分为两种不同的类型:"普通广播( ...