文档章节

排序算法汇总

_编程菜鸟_
 _编程菜鸟_
发布于 2013/10/10 16:49
字数 609
阅读 51
收藏 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
看图轻松理解数据结构与算法系列(选择排序)

前言 推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各种堆、各种队列、各种列表、各种树、各种图、各种排序等...

超人汪小建
2018/08/16
0
0
GitHub 一万多 Star,一个可视化学算法的好工具

(给程序员的那些事加星标) 程序员学算法和数据结构时,如果从纯文本和静态图来学,挺枯燥的。 相反,可视化动画工具,真是一个非常棒的帮手。这类工具/网站,我们曾介绍过 3 个: 今天我们...

程序员的那些事_
2018/11/30
0
0
排序算法汇总

插入排序 1.直接插入排序 思想:每次将一个待排序的数据按照其关键字的大小插入到前面已经排序好的数据中的适当位置,直到全部数据排序完成。 时间复杂度:O(n2) O(n) O(n2) (最坏 最好 平均...

guorongjin
2016/08/12
1
0
看图轻松理解数据结构与算法系列(冒泡排序)

前言 推出一个新系列,《看图轻松理解数据结构和算法》,主要使用图片来描述常见的数据结构和算法,轻松阅读并理解掌握。本系列包括各种堆、各种队列、各种列表、各种树、各种图、各种排序等...

超人汪小建
2018/09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

求推广,德邦快递坑人!!!!

完全没想好怎么来吐槽自己这次苦逼的德邦物流过程了,只好来记一个流水账。 从寄快递开始: 2019年1月15日从 德邦物流 微信小app上下单,截图如下: 可笑的是什么,我预约的是17号上门收件,...

o0无忧亦无怖
昨天
4
0
Mac Vim配置

1.升级 vim   我自己 MacBook Pro 的系统还是 10.11 ,其自带的 vim 版本为 7.3 ,我们将其升至最新版: 使用 homebrew : brew install vim --with-lua --with-override-system-vim 这将下...

Pasenger
昨天
5
0
vmware安装Ubuntu上不了网?上网了安装不了net-tools,无法执行ifconfig?

1.重新设置网络适配器还是不行,如下指定nat 2.还需要指定共享网络,我是在无线环境下 3.无法执行ifconfig https://packages.ubuntu.com/bionic/net-tools到这个网站下载net-tools的deb文件...

noob_chr
昨天
2
0
解决SVN:E210007无法协商认证机制

svn:E210007 svn: Cannot negotiate authentication mechanism 执行下面代码即可 sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-ldap...

临江仙卜算子
昨天
2
0
java8的时间和`Date`的对比

java8的时间和Date的对比 java8提供了新的时间接口。相对Date,Calendar,个人感觉最大的好处是对时间操作的学习成本很低,比Calendar低。 1. LocalDate,LocalTime,LocalDateTime LocalDate 代...

北风刮的不认真了
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部