文档章节

排序算法汇总

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

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

超人汪小建
08/16
0
0
看图轻松理解数据结构与算法系列(冒泡排序)

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

超人汪小建
09/13
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

没有更多内容

加载失败,请刷新页面

加载更多

不学无数——SpringBoot入门IV

SpringBoot 1.Profiles Spring Profiles能够在不同的环境中使不同的应用配置生效。@Component和@Configuration两个注解都能够通过@Profiles来标记。下面是例子: @Configuration@Profile("b...

不学无数的程序员
5分钟前
1
0
nginx长连接出现504的解决办法

在http 中添加如下 fastcgi_connect_timeout 300s; fastcgi_send_timeout 300s; fastcgi_read_timeout 300s;...

hansonwong
6分钟前
0
0
记一次 Spring Boot多数据源 循环引用问题

如题,升级了一下mybatis版本后出现循环引用的问题。 具体异常如下 ***************************APPLICATION FAILED TO START***************************Description:The depen...

HeyS1
6分钟前
0
0
MongoDB Could not find host matching read preference { mode: \"primary\" } for set repl_shard1

最近在测试 MongoDB 4.0 分片集群 ,搭建好所有节点后,往mongos添加分片的时候,一直报错 Could not find host matching read preference { mode: \"primary\" } for set ,如下 mongos> sh...

xxj123gogo
11分钟前
0
0
linux安装java1.8

# tar -zxvf jdk-8u144-linux-x64.tar.gz vi /etc/profile export JAVA_HOME="/usr/local/java/jdk1.8.0_144" export CATALINA_HOME="/usr/local/tomcat/apache-tomcat-9.0.0.M22" export PA......

八戒八戒八戒
12分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部