二分法查找,冒泡排序,选择排序:
#include <stdio.h>
#include <unistd.h>
int lookdata(int*,int,int);
void bianli(int*,int);
void maopaopaixu(int*,int);
void shuru(int*,int);
void xuanzepaixu(int*,int);
int main(int argc, const char *argv[])
{
int arr[10]={9,8,7,6,5,4,3,2,1,0};
int size=sizeof(arr)/sizeof(arr[0]),x;
shuru(arr,size);
// maopaopaixu(arr,size);
xuanzepaixu(arr,size);
bianli(arr,size);
printf("请输入想要查找的数字!\n");
scanf("%d",&x);
int c=lookdata(arr,x,size-1);
printf("%d\n",c);
return 0;
}
int lookdata(int* arr,int key,int high){
int low=0,mid;
while(low<=high){
mid=(high+low)/2;
if(key>arr[mid])
low=mid+1;
else if(key<arr[mid])
high=mid-1;
else
return mid;
}
return -1;
}
//冒泡排序
void maopaopaixu(int* arr,int size){
int ch;
for(int i=0;i<size-1;i++)
for(int j=0;j<size-i-1;j++)
if(arr[j]>arr[j+1]){
ch=arr[j+1];
arr[j+1]=arr[j];
arr[j]=ch;
// printf("-----------------\n");
}
}
void bianli(int* arr,int size){
for(int i=0;i<size;i++)
printf("%-3d",arr[i]);
putchar(10);
}
void shuru(int* arr,int size){
printf("请输入%d个整数!\n",size);
for(int i=0;i<size;i++)
scanf("%d",arr+i);
}
void xuanzepaixu(int* arr,int size){
int max = 0 , ch = 0;
for(int i=0;i<size-1;i++){
max=0;ch=size-i-1;
for(int j=0;j<=ch;j++)
if(arr[max]<arr[j])
max=j;
/*
int temp = arr[ch];
arr[ch]=arr[max];
arr[max]=temp;
*/
if(ch!=max){
arr[ch]=arr[max]^arr[ch];
arr[max]=arr[ch]^arr[max];
arr[ch]=arr[max]^arr[ch];
}
}
}