一、选择排序
选择排序 : 从小到大
特点: 拿到其中一个元素依次和其他元素进行比较,最小值出现在0位
int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};
for(int i = 0 ; i<8 ; i++)
{
for(int j = i+1 ; j<= 8 ; j++)
{
if(nums[i] > nuts[j])
{
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
二、冒泡排序
冒泡排序从小到大
特点:相邻的两个元素进行比较,每次比较完,最值出现在最后
int nums[8] = {99, 12, 88, 34, 5, 44, 12, 100};
for(int i = 0 ; i<8 ; i++)
{
for(int j = 0;j < 8 - i; j++)
{
if(nums[j] > nums[j+1])
{
int temp = nums[j];
nums[j] = nums[j+1];
mums[j+1] = temp;
}
}
}
三、折半查找
折半查找原理:
数组必须是有序的,必须已知min 和 max(知道范围),动态计算mid的值,取出mid的值进行比较,
如果mid对应的值大于需要查找的值,那么max要变小为 mid - 1;
如果mid对应的值小于需要查找的值,那么min要变大为 mid + 1;
int findKey3(int nums[], int length, int key)
{
int min, max, mid;
min = 0;
max = length - 1;
// 只要还在我们的范围内就需要查找
while (min <= max) {
// 计算中间值
mid = (min + max) / 2;
if (nums[mid] < key) {
min = mid + 1;
}else if (nums[mid] > key )
{
max = mid - 1;
}else
{
return mid;
}
}
return -1;
}
网友评论