简单选择排序是经常用到的一种排序算法.

  原理: 

 1.简单选择排序一句话概括:每次选择无序数列中最小的将其放在有序数列的最后。

 2.在简单选择排序中,我们用初始化的数字int a[6]={2,5,6,3,1,4}

3.算法基本执行步骤1:找到初始的无序数组中最下的数,将其放在数组的头部。交换最小数和数组头部元素即可(这是与冒泡有区别的地方)。

 #include <stdio.h>
#include <stdlib.h> /*
* 简单选择排序一句话概括:每次选择无序数列中最小的将其放在有序数列的最后。
* 二、在简单选择排序中,我们用初始化的数字int a[6]={2,5,6,3,1,4}
* 三、算法基本执行步骤1:找到初始的无序数组中最下的数,将其放在数组的头部。交换最小数和数组头部元素即可(这是与冒泡有区别的地方)。
*/ //替换
void swap(int a[],int i,int j){
int temp = a[i];
a[i] = a[j];
a[j] = temp;
} //快速排序
void select_sort(int a[],int l)
{
// l = 6
int i,temp,j,k;
/*
* 推导过程 2,5,6,3,1,4
* i = 0 temp = 2 ,k =0 搜索到最小值1, k = 4 -> 1,5,6,3,2,4
* i = 1 temp = 5 ,k =1搜索到最小值2, k = 4 -> 1,2,6,3,5,4
* i = 2 temp = 6 ,k =2搜索到最小值3 k = 3 -> 1,2,3,6,5,4
* i = 3 temp = 6 ,k =3搜索到最小值4 k = 5 -> 1,2,3,4,5,6
* i = 4 temp = 5 ,k =4搜索不到 k = 4 k和i相同不做任何操作
*/ //最后一次不用循环
for (i=;i<l-;i++){
//获取头元素的值
temp = a[i];
k = i; //printf("%d\n",temp);
//从第i+1 元素开始查找,如果找到比首元素小就替换
for (j = i+;j<l;j++){ if (a[j] < temp){
//先记录下来最小值
temp = a[j];
k = j; //最小值的下标
}
} //替换
if ( i != k )
swap(a,i,k);
} } void main()
{
int a[] = {,,,,,};
int i,l = sizeof(a) / sizeof(int); //选择排序
select_sort(a,l); printf("选择排序后:\n");
for ( i = ; i < l; ++i) {
printf("%d\n",a[i]);
} }
 

c语言选择排序的更多相关文章

  1. c语言 选择排序

    选择排序 //    int array[] = {3, 2, 6, 9, 8, 5, 7, 1, 4}; //    int count = sizeof(array) / sizeof(array ...

  2. C语言——选择排序

    ---恢复内容开始--- 算法思想: n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ①初始状态:无序区为R[1..n],有序区为空. ②第1趟排序 在无序区R[1..n]中选出 ...

  3. C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置

    #include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7, ...

  4. 简单选择排序(Simple Selection Sort)的C语言实现

    简单选择排序(Simple Selection Sort)的核心思想是每次选择无序序列最小的数放在有序序列最后 演示实例: C语言实现(编译器Dev-c++5.4.0,源代码后缀.cpp) 原创文章, ...

  5. 冒泡排序和选择排序(Go语言实现)

    冒泡排序和选择排序是排序算法中比较简单和容易实现的算法.冒泡排序的思想为:每一次排序过程,通过相邻元素的交换,将当前没有排好序中的最大(小)移到数组的最右(左)端.而选择排序的思想也很直观:每一次排序 ...

  6. 排序算法——选择排序(js语言实现)

    选择排序:顾名思义选择,选择排序属于O(N^2)的排序算法,意思就是选择数组中的最小的拿出来放在第一位,然后再剩下的数里面,选择最小的,排在第二位,以此类推. 例如:8  3  4  5  6  2  ...

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

    1.选择排序的思路是:遍历数组,第一遍找出所有成员的最小值,放到数组下标为0的位置,第二遍从剩余内容中,再次找出最小值,放到数组下标为1的位置,以此类推,遍历完成所有的数组内容,最后结果就是:数组是按 ...

  8. C语言学习之选择排序

    上一篇文章中讲C语言排序中的比较常见的(交换)冒泡排序,那么这篇文章也将以新手个人的经历来讲同样比较常见而实用的数组排序之选择排序. 选择排序,从字面上看是通过选择来进行排序.其实它的用法就是通过选择 ...

  9. 基于python语言的经典排序法(冒泡法和选择排序法)

    前 每逢周末就遇雨期,闲暇之余,捣鼓了下python,心心念想学习,今天就在电脑上装了个2.7,学习了下经典算法,冒泡与选择排序法 第一次写关于python的文章,说的不当之处,多多指正,我积极改正 ...

随机推荐

  1. [转载:]C#与Fortran混合编程之本地调用Fortran动态链接库

    前言 C#发展到现在,已是一门相当完善的语言,他基于C语言风格,演化于C++.并依靠强大的.NET底层框架.C#可以用来快速构建桌面及Web应用.然而在我们的实际工作中,尽管C#已经非常完善,但还是不 ...

  2. 17.linux下root用户与普通用户

    默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢? (1)sudo 命令   这样输入当前管理员用户密码就可以得到超级用户的权限.但默认的情况下5分钟root权限就失效了. (2 ...

  3. 柯朗数(Courant number)研究

    在数值计算过程中,对于计算结果的准确性和效率有很高的要求,但是这两者之间往往互相矛盾:而使用柯朗数可用于平衡两者. 1.柯朗数的定义: C = sqrt(gh)*t/s 其中,t是时间步长,s是网格在 ...

  4. 应用EF访问SQLite数据

    创建项目,应用EF访问SQLite 1.创建项目 项目结构初始结构如下图所示,Netage.Data.SQLite 类库项目用于定义访问数据的接口和方法,Netage.SQLiteTest.UI 控制 ...

  5. Parquet与ORC:高性能列式存储格式(收藏)

    背景 随着大数据时代的到来,越来越多的数据流向了Hadoop生态圈,同时对于能够快速的从TB甚至PB级别的数据中获取有价值的数据对于一个产品和公司来说更加重要,在Hadoop生态圈的快速发展过程中,涌 ...

  6. jQuery MiniUI Demo

    http://www.miniui.com/demo/#src=datagrid/datagrid.html

  7. VFP调用SOAPTOOLKIT 低级API

    Connector=CREATEOBJECT("mssoap.HttpConnector")Connector.Property["EndPointURL"] ...

  8. spring mvc学习笔记一:hello world

    下面是创建springmvc简单案例的步骤: 项目的目录结构如下: 此案例使用maven构建. 第一步:创建动态web工程,然后项目->configure->convert to mave ...

  9. 建筑材料系统 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发

    框架介绍: 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性 ...

  10. Rust的力量

    大约3年前,学习了一个星期的Go语言,然后就没有然后了. Go里面的有些东西设计很新颖,但是缺点也很明显. 上个周末,看了2个小时的Rust,我觉得Rust完全完胜Go语言. 再看Rust的定位,可以 ...