选择排序、冒泡排序和二分查找C/C++

本文介绍了两种基本的排序算法——选择排序和冒泡排序,并提供具体的C语言实现代码。此外,还详细解释了非递归折半查找算法的工作原理及其实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h> 
 
/*蛮力法排序*/
void swap(int* a, int* b)	//定义交换函数
{ 
    *a = *a ^ *b; 
    *b = *a ^ *b; 
    *a = *a ^ *b; 
}; 
 
void selectionSort(int* a, int n)	//选择排序算法,复杂度为N的平方
{ 
     int min;  
     for (int i = 0; i <= n - 2; i++){ 
		min=i;
        for (int j = i + 1; j <= n-1; j++) 
        { 
            if (a[j] < a[min]) 
            { 
				min=j;
            } 
        } 
 
        swap(&a[min], &a[i]); 
    } 
}

void BubbleSort(int*a, int n){		//冒泡排序算法,复杂度为N的平方
		int i,j;
		for(i=0;i<=n-1;i++)
			for(j=0;j<=n-2;j++){
				if(a[j]>a[j+1])
					swap(&a[j],&a[j+1]);
			}
}


int BinarySearch(int *a,int index,int n){//递归的折半查找法
		int min,mid,big;
		min=0;
		big=n-1;
		mid=big/2;
		while(min<big){
			mid=(min+big)/2;
			if(a[mid]==index) return mid;
			else if(index<a[mid]) min=mid-1;
			else if(index>a[mid]) big=mid+1;
		}
		return -1;
}
 
void main(int argc,char *argv[]) 
{ 

	int i;
    int a[10] = {24, 1145, 21, 10, 4, 5, 9, 13, 7, 101};  
	
	selectionSort(a, 10); 
	printf("选择排序结果为:\n");
	for(i=0;i<10;i++) printf("%d  ",a[i]); 
	
	printf("\n____________________________\n");	

//	BubbleSort(a, 10); 
//	cout<<"冒泡排序结果为:\n"<<endl;
//	for(i=0;i<10;i++) cout<<("%d  ",a[i])<<ends;

	printf("非递归法折半查找10的位置(从0开始)为:%d\n",BinarySearch(a,10,10));
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值