数据结构第五次作业(2024.8.6)(第十四次作业)

二分法查找,冒泡排序,选择排序:

#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];
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值