c语言的两种排序方法
用“冒泡排序法”对一维数组中的整数进行排序,使其元素的值按从小到大的顺序排列。
冒泡排序法是一种简单的排序方法,排序方法如下所述。
设有n个数要求从小到大排列,冒泡排序法的排序过程分为如下的n-1步:
第1步 从下向上,相邻两数比较,小者调上。反复执行n-1次,第1个数最小。
第2步 从下向上,相邻两数比较,小者调上。反复执行n-2次,前2个数排好。
第k步 从下向上,相邻两数比较,小者调上。反复执行n-k次,前k个数排好。
...
第n-1步 从下向上,相邻两数比较,小者调上。反复执行1次,排序结束。
例如,“9、6、8、2、4”的排序过程动画演示参考教程指导部分,程序如下:
main()
{ int n,i,j,x,a[5];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=1;i<n;i++)
for(j=0;j<n-i;j++)
if(a[j]>a[j+1])
{ x=a[j]; a[j+1]=a[j]; a[j]=x;}
for(i=0;i<n;i++)
printf("%3d ",a[i]);
}
【例4-6】用”选择排序法“对一维数组中的整数进行排序,使其元素的值是按从小到大的顺序排列。
选择排序法也是一种简单的排序方法,排序方法如下所述。
设有n个数要从小到大排列,选择排序法排序过程分为n-1步:
第一步 在第1n个数中出最小数,然后和第一个数交换,前一个数排好。
第二步 在第2n个数中出最小数,然后和第二个数交换,前两个数排好.
...
第二步 在第kn个数中出最小数,然后和第k个数交换,前k个数排好.
...
第n-1步 在第(n-1)n个数中出最小数,然后和第n-1个数交换,排序结束.
例如,"9、6、8、2、4"的排序过程动画演示参考教程指导部分,程序如下:
Void main()
{
int n,i,j,x,a[5];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(a[i]>a[j])
{ x=a[i]; a[i]=a[j]; a[j]=x; }
for(i=0;i<n;i++)
printf("%3d ",a[i]);
}
改进的选择排序程序如下:
Void main()
{
int n,i,j,x,p,a[5];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++)
{
p=i;
for(j=i+1;j<n;j++)
if(a[p]>a[j])
p=j;
if(p!=i)
{ x=a[p]; a[p]=a[j]; a[j]=x; }
for(i=0;i<n;i++)
printf("%3d ",a[i]);
c语言的冒泡排序算法 }
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论