c语言的两种排序方法
冒泡排序法对一维数组中的整数进行排序,使其元素的值按从小到大的顺序排列。
冒泡排序法是一种简单的排序方法,排序方法如下所述。
设有n个数要求从小到大排列,冒泡排序法的排序过程分为如下的n-1步:
1 从下向上,相邻两数比较,小者调上。反复执行n-1次,第1个数最小。
2 从下向上,相邻两数比较,小者调上。反复执行n-2次,前2个数排好。
k 从下向上,相邻两数比较,小者调上。反复执行n-k次,前k个数排好。
...
n-1 从下向上,相邻两数比较,小者调上。反复执行1次,排序结束。
例如,“96824”的排序过程动画演示参考教程指导部分,程序如下:
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个数交换,排序结束.
  例如,"96824"的排序过程动画演示参考教程指导部分,程序如下:
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小时内删除。