編程實作使用冒泡排序法對具有12個陣列元素的一維整型陣列array[12] = {96,35,12,58,78,90,587,21,0,-65,106,52}按照由大到小的排序進行排序,輸出排序前后的陣列,并查找90是否在該陣列中,若再該陣列中,輸出90在該陣列中的位置,否則輸出“90不在陣列array中”,要求:使用指標在函式中實作排序和查找的功能,在主函式中呼叫這兩個函式。
#include<stdio.h>
#include<stdlib.h>
#define N 12
int main()
{
int array[N]={96,35,12,58,78,90,587,21,0,-65,106,52};
int *ptr,i;
printf("排序前的陣列為:\n");
for(ptr=array;ptr<array+N;ptr++)
printf("%5d",*ptr);
int temp;
for(i=0;i<N-1;i++)
for(ptr=array;ptr<array+N-i-1;ptr++)
if(*ptr<*(ptr+1))
{
temp=*ptr;
*ptr=*(ptr+1);
*(ptr+1)=temp;
}
printf("\n排序后的陣列為:\n");
for(ptr=array;ptr<array+N;ptr++)
printf("%5d",*ptr);
printf("\n");
system("pause");
int array[N];
int x=90;
int location;
int bottom=0;
int top=N-1;
int mid;
int flag=0;
while(bottom<=top)
{
mid=(bottom+top)/2;
if(array[mid]==x)
{
location=mid;
flag=1;
break;
}
else if(array[mid]>x)
top=mid-1;
else
bottom=mid+1;
}
if(flag==0)
printf("不存在!\n");
else
printf("%d 在陣列中的位置是:%d\n",x,location+1);
system("pause");
return 0;
}
uj5u.com熱心網友回復:
system("pause");后面,你又宣告了一個array陣列,應該是它把你前面排好序的陣列屏蔽掉了。所以你相當于是在一個沒有初始化的陣列里面找90,肯定是找不到的。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/37698.html
標籤:基礎類
上一篇:求大神代碼
下一篇:求教,
