文档章节

排序算法汇总

_编程菜鸟_
 _编程菜鸟_
发布于 2013/10/10 16:49
字数 609
阅读 50
收藏 0
点赞 0
评论 0
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>

//选择法排序
//原理:将序列划分为无序和有序区,寻找无序区中的最小值和无序区的首元素交换,有序区扩大一个,循环最终完成全部排序。
void SelectSort(int *ipOriginData,//[I]初始元素
			   int iCount//[I]元素个数
			   )
{
	int i=0;

	/*输出原始元素*/
	printf("Origin Number:");
	for (i=0;i<iCount;i++)
	{
		printf("%d ",ipOriginData[i]);
	}  printf("\n");

	for (i=0;i<iCount;i++)
	{
		int j=0 ,k=0,iMin=0;

		k=i;
		iMin=ipOriginData[i];  /*将最小元素初始化为第i个元素*/
		for (j=i;j<iCount;j++)   /*j前面的数据已排好序,从j开始往后找到最小的元素*/
		{
			if (iMin>ipOriginData[j])
			{
				/*记录较小元素的值和下标*/
				k=j;
				iMin=ipOriginData[j];  
			}
		}
		/*将j后面最小的值和第i个元素交换位置*/
		ipOriginData[k]=ipOriginData[i];
		ipOriginData[i]=iMin;
	}
	/*输出排序后的元素*/
	printf("Select Sort Number:");
	for (i=0;i<iCount;i++)
	{
		printf("%d ",ipOriginData[i]);
	}
	printf("\n");

	return ;
}
//冒泡(起泡)法排序
//将序列划分为无序和有序区,不断通过交换较大元素至无序区尾完成排序。
void BubbleSort(int *ipOriginData,//[I]初始元素
				int iCount//[I]元素个数
				)
{
	int i=0;

	/*输出原始元素*/
	printf("Origin Number:");
	for (i=0;i<iCount;i++)
	{
		printf("%d ",ipOriginData[i]);
	}
	printf("\n");

	for (i=0;i<iCount-1;i++) /*共需要排序iCount-1次*/
	{
		int j=0;

		for (j=0;j<iCount-1-i;j++)
		{
			if (ipOriginData[j]>ipOriginData[j+1])/*将值较大的元素往下沉*/
			{
				int iTemp=0;

				iTemp=ipOriginData[j+1];
				ipOriginData[j+1]=ipOriginData[j];
				ipOriginData[j]=iTemp;
			}
		}
	}
	/*输出排序后的元素*/
	printf("Bubble Sort Number:");
	for (i=0;i<iCount;i++)
	{
		printf("%d ",ipOriginData[i]);
	}
	printf("\n");

	return ;
}
//直接插入排序
//将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。
void InsertSort(int *ipOriginData,//[I]初始元素
				int iCount//[I]元素个数
				)
{
	int i=0;

	/*输出原始元素*/
	printf("Origin Number:");
	for (i=0;i<iCount;i++)
	{
		printf("%d ",ipOriginData[i]);
	}
	printf("\n");

	for (i=1;i<iCount;i++)
	{
		int j=0;

		for (j=0;j<i;j++)
		{
			if (ipOriginData[i]<ipOriginData[j])
			{
				int m=0,iTemp=0;

				iTemp=ipOriginData[i];
				for (m=i;m>j;m--)
				{
					ipOriginData[m]=ipOriginData[m-1];
				}
				ipOriginData[j]=iTemp;
			}
		}
	}
	/*输出排序后的元素*/
	printf("Insert Sort Number:");
	for (i=0;i<iCount;i++)
	{
		printf("%d ",ipOriginData[i]);
	}
	printf("\n");

	return ;
}


void main( )
{
	int iOriginData[10]={3,2,6,7,5,1,0,4,9,8};

	//选择法排序
	SelectSort(iOriginData,10);
	//冒泡(起泡)法排序
	BubbleSort(iOriginData,10);
	//直接插入排序
	InsertSort(iOriginData,10);
	
	return ;
}

本文转载自:

共有 人打赏支持
_编程菜鸟_
粉丝 3
博文 105
码字总数 14021
作品 0
武汉
课程 | 利用 TensorFlow 实现排序和搜索算法

在 TensorFlow 更新到 1.3 版本之后,新添加了类似于一般编程语言的判断语句和循环语句,从而我们可以在 TensorFlow 图汇总实现类似于 C 语言或者 Python 语言的排序算法和搜索算法。本场 ch...

chen_h
2017/10/26
0
0
面试题36:数组中的逆序对

题目:在数组中的两个数字如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。例如,有一个数组为Array[0..n] 其中有元素a[i],a[j...

嗯哼9925
2017/12/27
0
0
2017年末,腾讯,百度,华为,搜狗和滴滴面试题汇总

Java基础 集合类以及集合框架;HashMap与HashTable实现原理,线程安全性,hash冲突及处理算法;ConcurrentHashMap 进程和线程的区别;多线程与线程池 数据一致性如何保证;Synchronized关键字...

野梦M
2017/12/27
0
1
维基百科上的算法和数据结构链接很强大

突然发现维基百科上的算法和数据结构比百度百科强多啦,图文并茂。 其实这个网站不错:http://www.sorting-algorithms.com 冒泡排序: bubble冒泡的意思 http://zh.wikipedia.org/wiki/%E5%8...

晨曦之光
2012/03/09
2.3K
1
译:编程面试的10大算法概念汇总

以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念。由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍。本文将从Java的角度看问题,包含...

拉偶有所依
2015/06/17
0
0
go语言文件汇总

归并排序及go语言实现 堆排序算法及go语言实现 Go语言基础学习(一)变量 【Leetcode】:Counting Bits问题 in Go语言 基于go语言的心跳响应 【Leetcode】:Single Number III问题 in Go语言 ...

d_watson
2016/04/15
127
2
android 面试题汇总

前言:前一段时间和大家交流,据反馈现在Android岗位也没有以前那么多了,当然这不意味着饱和,只是市场更趋于合理一些,就像深圳房价一样,以前破天慌的涨,新政出来后,房价慢慢趋向合理一...

xiahuawuyu
2016/12/12
72
0
Rxjs实践-各种排序算法排序过程的可视化展示

这几天学习下《算法》的排序章节,具体见对排序的总结,想着做点东西,能将各种排序算法的排序过程使用Rxjs通过可视化的方式展示出来,正好练系一下Rxjs的使用 本文不会太多介绍Rxjs的基本概念...

xiyuyizhi
2017/10/27
0
0
经典排序之 冒泡排序

Author: bakari Date: 2012.7.30 排序算法有很多种,每一种在不同的情况下都占有一席之地。关于排序算法我分“经典排序之”系列分别述之。本篇为冒泡排序。 冒泡排序是最古老的排序,我们最早...

chambai
2012/08/11
0
0
字符串排序----排序算法的选择

对字符串的排序可以使用前面的通用排序算法,但有些专用的字符串排序算法将比通用排序算法效率更高,它们突破了NlogN的时间下界。 算法 是否稳定 原地排序 运行时间 额外空间 优势领域 低位优...

Superheros
01/24
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

大数据教程(2.13):keepalived+nginx(多主多活)高可用集群搭建教程【自动化脚本】

上一章节博主为大家介绍了目前大型互联网项目的keepalived+nginx(主备)高可用系统架构体系,相信大家应该看了博主的文章对keepalived/nginx技术已经有一定的了解,在本节博主将为大家分享k...

em_aaron
7分钟前
0
0
Git 2.18版本发布:支持Git协议v2,提升性能

在最新的官方 Git 客户端正式版2.18中添加了对 Git wire 协议 v2 的支持,并引入了一些性能与 UI 改进的新特性。在 Git 的核心团队成员 Brandon Williams 公开宣布这一消息前几周,Git 协议 ...

六库科技
11分钟前
0
0
Java8新特性之接口

在JDK8以前,我们定义接口类中,方法都是抽象的,并且不能存在静态方法。所有的方法命名规则基本上都是 public [返回类型] [方法名](参数params) throws [异常类型] {}。 JDK8为接口的定义带...

developlee的潇洒人生
49分钟前
0
0
aop + annotation 实现统一日志记录

aop + annotation 实现统一日志记录 在开发中,我们可能需要记录异常日志。由于异常比较分散,每个 service 方法都可能发生异常,如果我们都去做处理,会出现很多重复编码,也不好维护。这种...

长安一梦
今天
2
0
将博客搬至CSDN

AHUSKY
今天
1
0
Python web框架Django学习(1)

1.Django简介 (1)Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。Django是一个开放源代码的Web应用框架,由Python写成。 (2...

十年磨一剑3344
今天
0
0
Databook-数据之书

Databook-数据之书 用于数据分析的Jupyter Notebooks。 不需购买服务器,快速开始自己的数据分析过程。 源码:https://github.com/openthings/databook 作者:openthings,https://github.co...

openthings
今天
7
0
Python PIPEs

https://www.python-course.eu/pipes.php https://www.tutorialspoint.com/python/os_pipe.htm

zungyiu
今天
1
0
gRPC学习笔记

gRPC编程流程 1. proto文件定义 proto文件用于定义需要通过gRPC生成的接口,可以理解为接口定义文档 2. 通过构建工具生成服务基类代码-Maven或Gradle 3. 服务端开发 服务端实现类须实现通过构...

OSC_fly
今天
0
0
Docker Mac (三) Dockerfile 及命令

Dockerfile 最近学习docker的时候,遇到一件怪事,关于docker镜像可能会被破坏,还不知道它会有此措施 所以需要了解构建Dockerfile的正确方法 Dockerfile是由一系列命令和参数构成的脚本,这些命...

___大侠
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部