c冒泡排序

C基本算法:

1.冒泡排序:

int all[5] = { 6, 1, 2, 0, 9 };
int LEN = sizeof(all) / sizeof(int);
for (int i = 0; i < LEN - 1; i++)
{
	for (int j = 0; j < LEN - 1 - i; j++)
	{
		if (all[j] > all[j + 1]){
			int temp = all[j + 1];
			all[j + 1] = all[j];
			all[j] = temp;
		}
	}
}
for (int j = 0; j < LEN; j++)
{
	printf("%d\n", all[j]);
}

2. 选择排序

int all[5] = { 6, 1, 2, 0, 9 };
int LEN = sizeof(all) / sizeof(int);

for (int i = 0; i < LEN-1; i++)
{
	int k = i;

	for (int j = k+1; j < LEN; j++)  //获取最小值
	{
		if (all[j] < all[k]){  // all[j]是小的
			k = j;  //把最小的记录下来
		}
	}
	// printf("%d\n", k);
	if (i != k){  //交换a[i]和a[k]
		int temp = all[i];
		all[i] = all[k];
		all[k] = temp;
	}
}
 // 冒泡排序:每次外循环只要符合条件2个元素都要交换位置
// 选择排序,只需要交换一次位置

for (int i = 0; i < LEN; i++)
{
	printf("%d\n", all[i]);
}

===================================================================
查找算法:

1. 顺序查找:

// 查找算法,顺序查找

int key = 0;
for (int i = 0; i < LEN; i++)
{
	if (a[i] == key){
		printf("%d\n", i);
	}
}

2. 二分法查找: 条件,数据必须已经排序

int bin_rec(int *array, int low, int high, int key)          //这里是low、high查找的开始位置结束位置,查找的key
{ 
	if (low <= high)//递归终止条件
	{
		int mid = (low + high) / 2;  //3
		if (key == array[mid])
			return mid;
		else if (key > array[mid])  
			return bin_rec(array, mid + 1, high, key);//在下半部分查找
		else
			return bin_rec(array, low, mid - 1, key);//在上半部分查找
	}
	else
		return -1;
}

你可能感兴趣的:(C++)