C 实现选择排序
一、选择排序的思想
假设有一个7元素的数组 [11, 24, 5, 17, 2, 8, 20],我们通过选择排序来从小到大排序。
思想是进行7次外循环从0-->6,每一次又是一个内循环,从i+1到6,
将索引位置的值同后面未排序的值比较,如果比他大就交换位置,每一次内循环都会选出最小的值放到索引位置。
二、通过C来实现
#include<stdio.h>
#include<stdlib.h>
void sort_min(int arr[], int length);
void sort_min(int arr[], int length)
{
    int i, j;
    int temp;
    for(i=0; i<length-1; i++)
    {
        for(j=i+1, j<length; j++)
        {
            if(arr[i]>arr[j])
                {
                    // 将较小的数放到索引i处,一个循环后,就i处就为该循环的最小值
                    temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
        }
    }
}
int  main()
{
    int arr_num[7] = {55, 17, 11, 65, 32, 9, 25};
    sort_min(arr_num, 7);
    for(int i=0; i<7; i++)
        printf("%d  ", arr_num[i]);
    printf("\n");
    system("pause");
    return 0;
}
接选择排序的最好时间复杂度和最差时间复杂度都是O(n²),因为即使数组一开始就是正序的,也需要将两重循环进行完,平均时间复杂度也是O(n²)。空间复杂度为O(1),因为不占用多余的空间。
但是在时间效率上就不如冒泡排序了
C 实现选择排序的更多相关文章
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
		本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ... 
- Html5 简单选择排序演示
		简单选择排序,是选择排序算法的一种.基本思想:每趟从待排序的记录中选出关键字最小的记录,顺序放在已排序的记录序列末尾,直到全部排序结束为止.由于在每次循环中,会对数值相等的元素改变位置,所以属于非稳定 ... 
- 排序算法总结------选择排序 ---javascript描述
		每当面试时避不可少谈论的话题是排序算法,上次面试时被问到写排序算法,然后脑袋一懵不会写,狠狠的被面试官鄙视了一番,问我是不是第一次参加面试,怎么可以连排序算法都不会呢?不过当时确实是第一次去面试,以此 ... 
- JavaScript算法(冒泡排序、选择排序与插入排序)
		冒泡排序.选择排序与插入排序复杂度都是二次方级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看 ... 
- 基本排序算法——选择排序java实现
		选择排序与冒泡排序有很大的相同点,都是一次遍历结束后能确定一个元素的最终位置,其主要思路是,一次遍历选取最小的元素与第一个元素交换,从而使得一个个元素有序,而后选择第二小的元素与第二个元素交换,知道, ... 
- java基础算法之选择排序
		选择排序 选择排序(Selection sort)是一种简单直观的排序算法.它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完. ... 
- 冒泡排序 & 选择排序 & 插入排序 & 希尔排序 JavaScript 实现
		之前用 JavaScript 写过 快速排序 和 归并排序,本文聊聊四个基础排序算法.(本文默认排序结果都是从小到大) 冒泡排序 冒泡排序每次循环结束会将最大的元素 "冒泡" 到最 ... 
- CPrimerPlus第十一章中的“选择排序算法”学习
		C Primer Plus第十一章字符串排序程序11.25中,涉及到“选择排序算法”,这也是找工作笔试或面试可能会遇到的题目,下面谈谈自己的理解. 举个例子:对数组num[5]={3,5,2,1,4} ... 
- SelectionSort,选择排序
		/**算法:选择排序1,从当前未排序的正数中找一个最小的整数,将它放在已排序的整数列表的最后2.要点:选择排序选最小的,往左边选*/ #include <stdio.h>void Sele ... 
- [PHP]基本排序(冒泡排序、快速排序、选择排序、插入排序、二分法排序)
		冒泡排序: function bubbleSort($array){ $len=count($array); //该层循环控制 需要冒泡的轮数 for($i=1;$i<$len;$i++){ / ... 
随机推荐
- JS思维导图(转)
			思维导图不得不说是学习及温习的极佳方法,这里转载一波网上他人的精品JS思维导图十张,共同学习,如有冒犯原著可联系本人及时处理. 
- 【Java学习系列】第4课--Java Web相关
			本文地址 分享提纲: 1.概述 2. Jsp基础 2.1 1.概述 1.1)[来源和先导] 本文主要的java web的教程来源JSP是 菜鸟教程JSP 和 天码营Java Web. 主要的先 ... 
- ClickHouse之Distributed Query Execution
			原文地址:https://clickhouse.yandex/docs/en/development/architecture/ 集群中的所有节点都是彼此独立的,当你在集群中的一个节点或者多个节点创建 ... 
- reorder-list  单链表
			题意: 给你一个单链表 a1 a2 a3 a4 a5....an 让你变成 a1 an a2 an-1 a3 an-2 .... 这里牵涉到,单链表的倒置和两个单链表的合并. class Soluti ... 
- ucml选项卡
			当业务视图组件VC并排摆放时就会形成选项卡,本章介绍选项卡有关的操作函数和事件. 页面中有三个对象:TabStrip,Panel和Tab,TabStrip含Panel对象和Tab对象.业务单元BPO没 ... 
- go标准库的学习-bufio
			参考https://studygolang.com/pkgdoc 导入方式: import "bufio" bufio包实现了有缓冲的I/O.它包装一个io.Reader或io.W ... 
- Mysql几种索引方式的区别及适用情况 (转)
			文章摘自http://blog.sina.com.cn/s/blog_4aca42510102v5l2.html Mysql目前主要有以下几种索引方式:FULLTEXT,HASH,BTREE,RTRE ... 
- linux 基础 用户操作
			命令: 1. whoami 2.su 用户名 3.useradd 用户名 4.passwd 用户名 
- 更换apt-get官方源为163源
			更换apt-get官方源为163源 1.# mv /etc/apt/sources.list /etc/apt/sources.list.bak 2.覆盖原来源文件 tee /etc/apt/sour ... 
- security相关链接整理
			token令牌 ssl协议 https协议 对称加密与非对称加密 认识ASP.NET Windows身份认证 
