冒泡数据排序算法
来源:互联网 发布:mmd软件下载 编辑:程序博客网 时间:2024/04/29 05:18
冒泡数据排序算法
01
/* 冒泡法是数据排序的一种基本算法,它的基本方法是:相邻两元素进行比较,如有需要则进行交换,
02
每完成一次循环就将最小元素排在最后(如从大到小排序),下一次循环是将其他的数进行类似操作?
03
如将N 个数按从大到小排序,Turbo C语言程序函数
04
如下: */
05
06
void
sort(
int
a[],
int
n);
07
main()
08
{
09
int
a[100],i ,j ,n ;
10
11
/*输入数组元素的个数及各元素的值*/
12
scanf
("%d",&n);
13
for
(i =0;i <n ;i ++ )
scanf
("%d",&a [i]);
14
sort(a,n);
15
for
(i =0;i <n ;i ++ )
printf
("%d",a[i]);
16
17
}
18
sort(
int
a[],
int
n)
19
{
20
int
i ,j ,t ;
21
for
(i =n -2;i >=0; i--)
22
for
(j =0;j <i ; j++)
23
if
(a[j]<a[j +1])
24
{
25
t =a[j];
26
a[j]=a[j +1];
27
a[j +1]=t ;
28
}
29
}
30
31
/*N 个元素需比较N *(N -1)/2次,效率较差?其实,可根据每一次循环比较中的情
32
况改进之? [改进一]:若某次循环中没有数据交换过,则可认为数据已经有序了,
33
不必再进行循环了,可在程序中设一变量Flag 用来标识有无数据交换? */
34
35
sort(
int
a[],
int
n)
36
{
37
int
i ,j ,t ,flag ;
38
for
(i =n -2;i >0; i--)
39
{
40
flag =0;
41
for
(j =0;j <i ; j++)
42
if
(a[j]<a[j +1])
43
{
44
t =a[j];
45
a[j]=a[j +1];
46
a[j +1]=t ;
47
flag =1;
48
}
49
if
(flag ==0)
break
;
50
}
51
}
52
53
/*[改进二]:如果在一次循环中,最后的某些元素没有交换过,则说明后面这些元
54
素的顺序已排序,下次循环可不对其进行比较?本方法主要考虑要排序的数组元素的范
55
围,而不是每一轮排序都将数组元素的范围减少1?*/
56
57
sort(
int
a[],
int
n)
58
{
59
int
i ,j ,t ,k,flag ;
60
flag =n -1;
61
while
(flag >0)
62
{
63
k=0;
64
for
(j =0;j <i ;j ++)
65
if
(a[j]<a[j +1])
66
{
67
t =a[j];
68
a[j]=a[j +1];
69
a[j +1]=t ;
70
k=j ;
71
}
72
flag =k;
/*此处不填flag = flag -1;*/
73
}
74
}
- 冒泡数据排序算法
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法-冒泡排序
- 排序算法 冒泡排序
- 排序算法-- 冒泡排序
- 排序算法-冒泡排序
- 排序算法---冒泡排序
- 排序算法-冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法--冒泡排序
- 排序算法 冒泡排序
- 分割字符串
- realloc,malloc,calloc的区别
- Spring高级程序设计 5 Spring AOP基础
- 友元实例:友元类及友元函数
- Python实现获取当前公网ip并且自动断开宽带连接功能
- 冒泡数据排序算法
- servlet + JSP+ mysql实现文件的上传
- 如何使用域组策略(AD GPO)分发软件安装以及卸载
- Android平台framework层的开发
- Eclipse下安装Android开发环境:NDK和CDT【转】
- VC6的栈平衡检查
- 如何防止脏读、不可重复读、幻读
- 黑马程序员--还是另偶头疼的javascript。。。这次是正则表达式
- uboot与linux之间参数的传递