C语言几种排序算法
(1)选择排序算法:选择排序算法是,将第一个数和其它的数比较,将较小的数(从小到大的排列)和第一个数换位,以此类推
#include<stdio.h>
int main()
{
int i,j; /*i用来存储数值最小的数组元素的数值,j用来存储该元素的位置*/
int a[10]; /*定义一个数组用来存储用户输入的数据*/
int iTemp;
int iPos;
/*通过双层循环进行选择排序,最后输出排序后的结果*/
printf("为数组元素赋值:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
/*从小到大排序*/
for(i=0;i<9;i++) /*设置外层为下标0-8的元素*/
{
iTemp=a[i]; /*设置当前元素为最小值*/
iPos=i; /*记录元素的位置*/
for(j=i+1;j<10;j++)
{
if(a[j]<iTemp) /*如果当前元素比最小元素还小*/
{
iTemp=a[j];/*重新设置最小值*/
iPos=j; /*记录元素位置*/
}
}
/*交换两个元素的位置*/
a[iPos]=a[i];
a[i]=iTemp;
}
/*输出数组*/
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
if(i==4) /*如果是第五个元素*/
{
printf("\n");/*输出换行*/
}
}
return 0;
}
(2)冒泡排序算法:冒泡排序算法是指在排序时,每次比较数组中两个相邻的元素的值,将较小的数排在较大的数的前面(从小到大的排序)。
#include<stdio.h>
int main()
{
int i,j;
int a[10];
int iTemp;
printf("位数组元素赋值:\n");
/*位数组元素赋值*/
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
/*由小到大排序*/
for(i=1;i<10;i++)
{
for(j=9;j>=i;j--)
{
if(a[j]<a[j-1])
{
iTemp=a[j-1];
a[j-1]=a[j];
a[j]=iTemp;
}
}
}
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
(3)交换排序算法:交换排序算法是将每一位数与其它所有数进行比较,如果发现符合条件的数据则交换位置,具体的代码如下:
#include<stdio.h>
int main()
{
int i,j;
int iTemp;
int a[10];
/*输入十个数字*/
printf("请输入10个数字:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
/*从小到大排序*/
for(i=0;i<9;i++) /*外层循环为0-8*/
{
for(j=i+1;j<10;j++) /*内层循环为i+1-9*/
{
if(a[j]<a[i]) /*如果当前值比其它值大*/
{
/*交换数值*/
iTemp=a[i];
a[i]=a[j];
a[j]=iTemp;
}
}
}
/*输出数组*/
for(i=0;i<10;i++)
{
printf("%d\t",a[i]);
}
return 0;
}
(4)插入排序算法:
#include<stdio.h>
int mian()
{
int i,j;
int a[10];
int iTemp;
int iPos;
/*输入十个数*/
printf("请输入10个数字:\n");
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
/*使用插入法按大小排序数组中的元素*/
for(i=0;i<10;i++) /*循环数组中的元素*/
{
iTemp=a[i];
iPos=i-1;
while((iPos>=0)&&(iTemp)<a[iPos] /*寻找插入值的位置*/
{
a[iPos+1]=a[iPos];
iPos-;
}
a[iPos+1]=iTemp;
}
/*输出*/
}
C语言几种排序算法的更多相关文章
- 用 C 语言描述几种排序算法
排序算法是最基本且重要的一类算法,本文基于 VS2017,使用 C 语言来实现一些基本的排序算法. 一.选择排序 选择排序,先找到数组中最小的元素,然后将这个元素与数组的第一个元素位置互换(如果第一个 ...
- 史上最全单链表的增删改查反转等操作汇总以及5种排序算法(C语言)
目录 1.准备工作 2.创建链表 3.打印链表 4.在元素后面插入元素 5.在元素前面增加元素 6.删除链表元素,要注意删除链表尾还是链表头 7.根据传入的数值查询链表 8.修改链表元素 9.求链表长 ...
- 排序—时间复杂度为O(n2)的三种排序算法
1 如何评价.分析一个排序算法? 很多语言.数据库都已经封装了关于排序算法的实现代码.所以我们学习排序算法目的更多的不是为了去实现这些代码,而是灵活的应用这些算法和解决更为复杂的问题,所以更重要的是学 ...
- 几种排序算法的学习,利用Python和C实现
之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算 ...
- 秒杀9种排序算法(JavaScript版)
一:你必须知道的 1> JS原型 2> 排序中的有序区和无序区 3> 二叉树的基本知识 如果你不知道上面三个东西,还是去复习一下吧,否则,看下面的东西有点吃力. 二:封装丑陋的原型方 ...
- PHP的几种排序算法的比较
这里列出了几种PHP的排序算法的时间比较的结果,,希望对大家有所帮助 /* * php 四种排序算法的时间与内置的sort排序比较 * 3000个元素,四种算法的排序所用的时间比较 * 冒泡排序 85 ...
- 学习Java绝对要懂的,Java编程中最常用的几种排序算法!
今天给大家分享一下Java中几种常见的排序算法的Java代码 推荐一下我的Java学习羊君前616,中959,最后444.把数字串联起来! ,群里有免费的学习视频和项目给大家练手.大神有空时也 ...
- C#常用8种排序算法实现以及原理简介
public static class SortExtention { #region 冒泡排序 /* * 已知一组无序数据a[1].a[2].--a[n],需将其按升序排列.首先比较a[1]与a[2 ...
- java算法03 - 常用的8种排序算法
Java常用的八种排序算法: 插入排序 - 直接插入排序 每次将待排序的记录按照关键字的大小,插入到前面已经排好序的记录的适当位置.直到全部记录插入完成. 代码实现 /** * 直接插入排序 O(n^ ...
随机推荐
- moviepy音视频剪辑:与time时间线相关的变换函数freeze_region、make_loopable、speedx、time_mirror、time_symmetrize介绍
☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<moviepy音视频剪辑:moviepy中的剪辑基类Clip详解>介绍了剪辑基类的fl.fl_time.fx方法,在<movi ...
- 第7.27节 Python案例详解: @property装饰器定义属性访问方法getter、setter、deleter
上节详细介绍了利用@property装饰器定义属性的语法,本节通过具体案例来进一步说明. 一. 案例说明 本节的案例是定义Rectangle(长方形)类,为了说明问题,除构造函数外,其他方法都只 ...
- PyQt(Python+Qt)学习随笔:QListView的viewMode属性
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 QListView的viewMode属性用于控制QListView的视图模式,该属性类型为枚举类型Q ...
- PyQt学习随笔:Model/View中诸如DisplayRole的数据角色及含义
在PyQt中,模型可以针对不同的组件(或者组件的不同部分,比如存储数据.界面展示数据.按钮的提示等)提供不同的数据.例如,Qt.DisplayRole用于视图的文本显示.通常来说,模型中的数据项包含一 ...
- Pentaho Report Designer 报表系统 - 入门详解
目录 简介 安装与配置 环境要求 运行方式 使用教学 数据源配置与原始数据获取 报表布局设计与格式化 布局设计 模块结构 控件 示例 报表预览与发布 报表访问与获取 参考材料 简介 Pentaho ...
- 代码审计【根据功能点定向审计】BugFree ZSWin重装案例
(哦对了!这些CMS代码不要安装在服务器上,先不说它们用来代码审计本身就是有漏洞的,而且在网上下载下来,也不能保证没有源码是否被篡改而留有后门,就安装在本地进行代码审计的练习即可) 我们先下载BugF ...
- 在 GitHub 玩硬件——GitHub 热点速览 Vol.49
作者:HelloGitHub-小鱼干 本周的 GitHub Trending 可以说是非常之硬核,天才少年稚晖君的 2 个硬件变装项目荣登热点榜,看完将充电宝改装为显示器的视频,搭配 HDMI-PI ...
- python自带缓存lru_cache用法及扩展(详细)
本篇博客将结合python官方文档和源码详细讲述lru_cache缓存方法是怎么实现, 它与redis缓存的区别是什么, 在使用时碰上functiontools.wrap装饰器时会发生怎样的变化, ...
- css3实现立体魔方效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 情话爬虫工具[windows版]
有没有在气氛暧昧的情况下想说点什么却又无话可说?女朋友有没有抱怨过你,只会写代码,一点都不懂情调?这次,是时候要改变她对你的看法了!一键爬取情话,情话全都躺在txt里面.想怎么玩就怎么玩!张口一句情话 ...