冒泡排序、二分查找

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAX 500

void sort(int *);
int fond(int *, int, int, int);

int main () {
	int arr[MAX], fon;
	srand(time(0));
	for (int i =0; i < MAX; ++i) arr[i] = rand()%1000;
	sort(arr);
	fon = (rand() % 1000) / 2;
	printf("
查找:%d
%d
", fon, fond(arr, fon, 0, MAX)); // 找到返回排序后的位置,未找到返回-1
	return 0;
}

int fond (int *arr, int s, int left, int right) {
	if (left > right) return -1;
	int mid = (left + right) / 2;
	if(arr[mid] == s) return mid;
	arr[mid] > s ? right = mid - 1 : left = mid + 1;
	fond(arr, s, left, right);
}

void sort(int *arr) {
	for (int i = 0; i < MAX; ++i)
		for (int j = 0; j < MAX - 1 - i; ++j) {
			if (arr[j] > arr[j + 1]) {
				arr[j] ^= arr[j + 1];
				arr[j + 1] ^= arr[j];
				arr[j] ^= arr[j + 1];
			}
		}
	for (i = 0; i < MAX; ++i) printf("%d ", arr[i]);
}
原文地址:https://www.cnblogs.com/hhhahh/p/14119201.html