shuju.txt

来自「对n个关键字取整数的记录进行整序」· 文本 代码 · 共 37 行

TXT
37
字号
#include<stdio.h>
int Divide(int a[], int n)//把数组a中所有值为非负的记录调到负的记录之前
{  
 int l,h,t;
 l=0;
 h=n-1;
 while(l<h)
 {
   while(l<h&&a[h]>=0) h--;    //以0作为虚拟的枢轴记录
   {t=a[l]; //当从后向前找时发现后面的数为非负,交换当前a[l]与a[h]的值
    a[l]=a[h];
    a[h]=t;}
   while(l<h&&a[l]<0)  l++;//当从前向后找时发现前面的数为负,交换当前a[l]与a[h]的值
   {t=a[l]; a[l]=a[h];a[h]=t;}
 }//while
return 1;
}//Divide

void main()
{ int i=0;
  int n;
  int A[20];
  printf("请输入待排序的记录个数n:"); //提示输入数组元素个数
  scanf("%3d",&n);
  printf("请输入一组待排序的记录的值:\n "); //输入数组A
  for(i=0;i<n;i++)
     scanf("%3d",&(A[i]));
  printf("输出整理之前的记录为:\n ");
  for(i=0;i<n;i++)
     printf("%3d",A[i]);//输出数组A
  Divide(A,n);//调用函数Divide,把数组A中所有值为非负的记录调到负的记录之前
  printf("\n一次排序后的记录为:\n ");
  for(i=0;i<n;i++)
     printf("%3d",A[i]);
  printf("\n");
}//main

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?