C语言排序有哪些方法 详细点

RT... RT 展开
 我来答
百度网友dd93720
2011-08-20 · TA获得超过1205个赞
知道小有建树答主
回答量:195
采纳率:0%
帮助的人:228万
展开全部
排序方法吗应该和语言没有太紧密的关系,关键看数据类型和结构,一般常用的排序方法有:
1 插入排序——细分的话还可有(1)直接插入排序(2)折半冲迅插入排序(3)希尔排序(4)2-路插入排序(5)表插入排序 等
2 比较排序——如冒泡排序,快速排序 等
3 选择排序——如简单选择排序,树形选择排序,散拍此堆排序 等
4 归并排序——简单的如 2-路归并排序 等
5 基数排序
等等
一般情况下,如果数据不大,只是简单的自己练习或简单的几个十几个或几十个数据的话,效率分不出多少来,常用冒泡,直接插入,简单选择这几种简单的时间复杂度为O(n2)的排序方法就可以。这里举一个简单的小例子——比较排序中的——冒泡排序 如下:

//其中a[]是用于排序的数组变量的首地址,也即数组名,a[0]不放数据,
//用于交换时的辅助存储空间,数据从a[1]开始存放,n表示存放的数据个数
void bubble_sort(int a[], int n){
int i = 0, j = 0, change = 0;//change用于记录当前次比较是否进行了交换
for(i = n - 1, change = 1; i >= 1 && change; i--){//如果贺简change是0,即已经排好序不用再进行比较了
change = 0;//将当前次的change赋值为0,记录不交换即下次不用比较了
for(j = 1; j <= i; j++){//内循环依次将相邻的两个记录进行比较
if(a[j] > a[j+1]){//小的前移,最大的移动到本次的最后一项去
a[0] = a[j+1];
a[j+1] = a[j];
a[j] = a[0];
change = 1;//进行了交换的标记
}
}
}
}
pcx1990
2011-08-23
知道答主
回答量:29
采纳率:0%
帮助的人:10.5万
展开全部
大概有如下的几类:
冒泡排序,选择排序, 希而排序,快速排序,堆排序,合并排胡链序,基数排序等等!
冒泡排序:
42,35,7,89,34,65,12,9;
第一次:以第一个位置的数作为关键字依次和后帆做指面的数进行比较,如果比第一个小,就和第一个位置的数进行交换,找出最小的数。
7,42,35,89,34,65,12,9
第二次:以第二个位置的数作为关键字依次和后面的数进行比较,如果比第二个位置的数小,就和第二个位置的数进行交换,找出最小的数。
7,9,42,89,35,65,34,12
第三次:以第三个位置的数作为关键字依次和后面的数进行比较,如果比第三个位置的数小,就和第三个位置的数进行交态配换,找出最小的数。
7,9,12,89,42,65,35,34
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式