赞
踩
C语言排序方法有三种,
一是冒泡排序法
通过双循环不断的比较,交换位置,将需要排序的元素一点一点向两侧移动,逐渐达到排序的目的
代码如下:
for (j = 0; j < n-1; j++)
{
for (i = 0; i < n- j-1; i++)
if (a[i] > a[i + 1])//比较
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;//换位
}
}
冒泡排序很简单也很稳定,但是由于每一轮都要遍历一遍所有的元素,效率就不是很高
二是选择排序法
每一次从需要排序的元素的找出最大或最小的元素,存储在最右侧或最左侧,再从剩余元素中继续寻找,继续存储,直至排序完成
代码如下:
for (i=0;i<n-1;i++)
{
k=i;//假设下标为k时,元素最大或最小
for (j=i+1;j<=n;j++)
{
if(a[j]>a[k])
k=j;
}
if(k!=i)
{
t = a[k];
a[k] = a[j];
a[j] = t;//换位
}
}
选择排序不稳定,但是效率与冒泡排序相比,有明显提高
三是插入排序法
插入排序的基本思想是:将数组的第一个数认为是有序数组,把其余数根据大小插入到数组中,直至数组排列完成
代码如下:
for(int i= 1; i<n; i++){
if(a[i] < a[i-1])
{
int j= i-1;
int x = a[i];
while(j>-1 && x < a[j])
{ //数组元素后移
a[j+1] = a[j];
j--;
}
a[j+1] = x; //完成插入
}
插入排序很稳定,但是不适合排序数组元素过多的情况
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。