#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));
}
选择排序、冒泡排序和二分查找C/C++
最新推荐文章于 2020-04-17 23:53:04 发布