用指针方法编程,将键盘输入3个整数,按降序排序并输出

用指针方法编程,将键盘输入3个整数,按降序排序并输出

上面的虽然对,但只是把一对一把数组"改写"成指针,没有优化的。
------------------------------------------------------------------------
我前几天编过 数组冒泡排序改指针冒泡的子程序给你,
指针是优化的,指针顺序访问。
至于输入输出,自已做了,要抓主要矛盾。
下面是原数组冒泡:
void bSort(int d[],int n) // 比交换法要少交换
{
int m;
for (int i=0;i {
m=i; // 用来保存极值的下标
for (int j=i+1;j if (d[m] m=j; // j取袜咐代极值的位置m
int t=d[i]; // 把极值d[m]与 d[i]交换一下,让极值到前面去。
d[i]=d[m];
d[m]=t; // 交换
}
}
因为数组是顺序访问告腊纯的,可以很简局辩单地将上面的数组冒泡改成指针:
void pSort(int d[],int n) // 用指针代替数组
{
int *di=d; // 指针di对应d[i]
for (int i=0;i {
int *m=di; // 极值位置指针
int *dj=di+1; // 指针dj对应d[j]
for (int j=i+1;j {
if (*di <*dj)
m=dj; // 新的极值位置
dj++; // 与j同步
}
int t=*di; // 交换 *di与*m
*di=*m;
*m=t;
di++; // 与i同步
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{ // C++BUILDER6调试
int d[]={1,2,3,4,5,6,7,8,9,10};
int n=sizeof(d)/sizeof(d[0]);
pSort(d,n);
for (int i=0;i Memo1->Lines->Add(d[i]); // 显示排序后的数组
}
上面的排序已通过,输入输出代码自已重新编了,我用的是C++BUILDER调试的,
-------------
#include

void sort(int *arr,int n){
int i,j;
int max;
for(i=0;i<知毁银搭宴n-1;i++){
max=i;
for(j=i+1;jif(*(arr+j)>*(arr+max))max=j;
int temp=*(arr+i);
*(arr+i)=*(arr+max);
*(arr+max)=temp;
}
}

int main(){
int arr[3];
printf("Enter 3 integers:\n");
int i;
for(i=0;i<余颤3;i++)
scanf("%d",&arr[i]);
sort(arr,3);
for(i=0;i<3;i++)
printf("%d ",arr[i]);
printf("\n");
return 0;
}
← 上一篇: 下一篇: →