您的位置:首页 > 编程语言 > C语言/C++

C语言排序算法

2016-07-24 23:21 465 查看
C语言常用算法小结:

一、冒泡法

算法原理:

假设N个数从小到大排序,从第一个数开始,两两比较:即第一数和第二个比较,第二个数和第三个比较,以此类推;不满足从小到大的规则,则调换两个数的顺序。

经过第一轮比较,则最大的数排到最后了,且经历了 N -1 次比较。

第二轮也是从第一个数开始,两两比较,经历 N -2 次比较后,第二大的数排到了倒数第二的位置了。

总共比较N - 1 轮,则整个排序过程结束。

C语言算法实现:

void Bubble_Sort(int ArrIn[],int len)
{
int i,j,temp;

for(i = 0;i < len - 1;i++)
{
for(j = 0;j< len - i -1;j++)
{
if(ArrIn[j] > ArrIn[j+1])
{
temp = ArrIn[j];
ArrIn[j] = ArrIn[j+1];
ArrIn[j +1] = temp;
}
}
}
}

二、选择法
算法原理:

首先,以一个元素为基准,从一个方向开始扫描,比如从左到右扫描,以A[0] 为基准,接着从A[1] 到A
中找出最小的元素,将其与A[0] 交换。

然后,将A[1] 作为基准,重复上面的动作。一直进行到将A[N - 1] 作为基准,将其与A
比较,看是否交换,排序结束。

C语言算法实现:

void Select_Sort(int arr[],int Count)
{
int iTemp;
int iPos;

for(int i=0;i<Count-1;i++)
{
iTemp = arr[i];
iPos = i;
for(int j=i+1;j<Count;j++)
{
if(arr[j]<iTemp)
{
iTemp = arr[j];
iPos = j;
}
}
arr[iPos] = arr[i];
arr[i] = iTemp;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序