第27课 - 初始斗转

1. 选择排序

每一次选出前面的元素最小的元素作为第i个元素。

程序:

#include <stdio.h>

void println(int array[], int len)

{

int i = 0;

for(i=0; i<len; i++)

{

printf("%d ", array[i]);

}

printf("\n");

}

void swap(int array[], int i, int j)

{

int temp = array[i];

array[i] = array[j];

array[j] = temp;

}

void SelectionSort(int array[], int len) // O(n*n)

{

int i = 0;

int j = 0;

int k = -1;

for(i=0; i<len; i++)

{

k = i;

for(j=i; j<len; j++)

{

if( array[j] < array[k] )

{

k = j;

}

}

swap(array, i, k);

}

}

int main()

{

int array[] = {21, 25, 49, 25, 16, 8};

int len = sizeof(array) / sizeof(*array);

println(array, len);

SelectionSort(array, len);

println(array, len);

return 0;

}

2. 插入排序

当插入第i个元素的时候,前面的元素都已经排列好了。我们用V[i]的关键字与前面的关键字进行比较,找到插入位置,将V[i]插入即可。原来位置上的对象向后顺移。

程序:

#include <stdio.h>

void println(int array[], int len)

{

int i = 0;

for(i=0; i<len; i++)

{

printf("%d ", array[i]);

}

printf("\n");

}

void swap(int array[], int i, int j)

{

int temp = array[i];

array[i] = array[j];

array[j] = temp;

}

void InertionSort(int array[], int len) // O(n*n)

{

int i = 0;

int j = 0;

int k = -1;

int temp = -1;

for(i=1; i<len; i++)

{

k = i;

temp = array[k];

for(j=i-1; (j>=0) && (array[j]>temp); j--)

{

array[j+1] = array[j];

k = j;

}

array[k] = temp;

}

}

int main()

{

int array[] = {21, 25, 49, 25, 16, 8};

int len = sizeof(array) / sizeof(*array);

println(array, len);

InertionSort(array, len);

println(array, len);

return 0;

}

3. 冒泡排序

设代排序的数据元素有n个,最多作n-1趟。走一趟选一个。

程序:

#include <stdio.h>

void println(int array[], int len)

{

int i = 0;

for(i=0; i<len; i++)

{

printf("%d ", array[i]);

}

printf("\n");

}

void swap(int array[], int i, int j)

{

int temp = array[i];

array[i] = array[j];

array[j] = temp;

}

void BubbleSort(int array[], int len) // O(n*n)

{

int i = 0;

int j = 0;

int exchange = 1;

for(i=0; (i<len) && exchange; i++)

{

exchange = 0;

for(j=len-1; j>i; j--)

{

if( array[j] < array[j-1] )

{

swap(array, j, j-1);

exchange = 1;

}

}

}

}

int main()

{

int array[] = {21, 25, 49, 25, 16, 8};

int len = sizeof(array) / sizeof(*array);

println(array, len);

BubbleSort(array, len);

println(array, len);

return 0;

}

小结:

选择排序,插入排序以及冒泡排序的算法思想简单,而且算法的时间复杂程度都是O(n2)。

这三种排序的算法都是稳定的。

转载于:https://www.cnblogs.com/free-1122/p/11336010.html

数据--第27课 - 初始斗转相关推荐

  1. webgl第27课-三维空间-不同位置的三角形

    需要电子档书籍可以Q群:828202939   希望可以和大家一起学习.一起进步!! 所有的课程源代码在我上传的资源里面,本来想设置开源,好像不行!博客和专栏同步! 如有错别字或有理解不到位的地方,可 ...

  2. 当且仅当函数依赖a→b在r上成立_数据库第06章关系数据理习题课.ppt

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp数据结构与算法 数据库第06章关系数据理习题课.ppt36页 本 ...

  3. python逐笔输入数据_知到智慧树Python数据分析与数据可视化结课测验

    知到智慧树Python数据分析与数据可视化结课测验答案 更多相关问题 已知三角形三个顶点的坐标是A(-1,2,3),B(1,1,1),C(0,0,5),试证三角形ABC是直角三角形,并求角B-- Wh ...

  4. 大数据入门第一课 Hadoop基础知识与电商网站日志数据分析

    大数据入门第一课 Hadoop基础知识与电商网站日志数据分析 本课程从Hadoop核心技术入手,以电商项目为依托,带领你从0基础开始上手,逐步掌握大数据核心技术(如:HDFS.YARN.MapRedu ...

  5. 视频教程-大数据分析师实战课-大数据

    大数据分析师实战课 任老师,Cloudera管理/开发/分析认证讲师,华为高级特聘讲师,新华三大学高级特聘讲师,中国大数据技术与应用联盟高级讲师,全国高校大数据联盟特聘讲师,中国移动高级讲师,前IBM ...

  6. 《Spark商业案例与性能调优实战100课》第27课:彻底解密Spark Shuffle令人费解的6大经典问题

    <Spark商业案例与性能调优实战100课>第27课:彻底解密Spark Shuffle令人费解的6大经典问题

  7. .NET Core开发实战(第27课:定义Entity:区分领域模型的内在逻辑和外在行为)--学习笔记...

    27 | 定义Entity:区分领域模型的内在逻辑和外在行为 上一节讲到领域模型分为两层 一层是抽象层,定义了公共的接口和类 另一层就是领域模型的定义层 先看一下抽象层的定义 1.实体接口 IEnti ...

  8. Ext.js 进入页面直接加载数据、输入框设置初始值

    Ext.js使用过程中遇到的一些问题 直接加载数据 输入框设置初始值 直接加载数据 加上这段代码,可以在显示页面的过程中传入参数,执行查询,显示结果. Ext.onReady(function () ...

  9. 大数据学习第一课:虚拟机安装配置

    本章主要内容 VirtualBox下安装CentOS7 Minimal版本 Minimal版本Centos7静态IP网络设置 ssh免密登录设置 我们现在身处数据时代,大数据和人工智能已经逐渐渗透到我 ...

  10. Conflux 进阶课 | 初始阶段通证发行数量

    Conflux 进阶课 在这里,Conflux 团队成员将敞开心扉,权威解析 Conflux 网络最新进展.生态构建进程等信息,没有八卦.没有小道消息,绝对干货.绝对知无不言,想要 360° 无死角了 ...

最新文章

  1. Digg 让 八 动起来,让 八 产生价值
  2. Altium designer不显示飞线的三种方法
  3. linux kernel浮点处理
  4. tomcat mysql如何优化_Tomcat+Mysql高并发配置优化讲解
  5. OpenCV Mat基础认知感
  6. HTTPConnectionPool(host:XX)Max retries exceeded with url 解决方法
  7. a+ open python_python编程之文件操作
  8. 孙鑫老师的j2ee教程—j2ee视频教程
  9. Jad批量反编译class
  10. 小车|PID算法 闭环控制 带有 霍尔编码器 的电机
  11. Atitit 常用街机系统and 模拟器总结 snk neo geo cps mame sfc smc
  12. 关于华硕飞行堡垒系列无法使用扇热小风扇的问题
  13. TFBGA240+25封装尺寸图
  14. html文字段落设置,p字间距 html段落内文字设置字间距间隔
  15. 男人在神永恒国度里的沉思录
  16. 做好一个BI项目的关键是什么
  17. 华硕h410csm怎么开启_华硕主板怎么设置U盘启动 华硕主板设置U盘启动教程
  18. Unity3D基础知识笔记
  19. pandas删除含有空值的行
  20. 行业太捐了,下半年该咋整

热门文章

  1. 静态的顺序表(C语言实现)
  2. MapReduce计算框架知识总结(一)
  3. 从源码角度分析android事件分发处理机制
  4. slxrom+v.21+原生android+4.2,小米4移动联通版 魔趣OS 安卓10 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
  5. cacti升级后还是用的旧路径_Flutter1.9升级体验及填坑全攻略
  6. 关于直播,所有的技术细节都在这里了(二)
  7. php单引号中变量,php中单引号双引号那点事---顺便说说把php变量的值传给js
  8. php 多个files 数量,php – 具有多个字段时$_FILES数组的奇怪格式
  9. c#服务器后台搭建_微信影视小程序搭建拆解:第一课,影视小程序简介,搭建影视小程序的整体流程...
  10. python从入门到实践第二版_【Python入门教程】第二季网络爬虫基础