C语言中排序算法
选择排序:拿到其中一个元素的值依次和其他元素进行比较,完全比较完一次之后,最大或者最小的值出现在第0位.
冒泡排序:用两个相邻的元素进行比较,每完全比较完依次,最大或者最小的值出现在末尾.
例:
int nums[5] = {9,3,4,6,1};
int length = sizeof(nums)/sizeof(nums[0]);
for ( int i = 0 ; i <length; i++) {
printf("num[%i] = %i\n",i,nums[i]);
}
for (int i = 0 ; i < length-1; i++) {
for (int j = 0 ; j <length -1 - i; j++) {
if (nums [j] > nums [j+1]) {
int temp = nums[j];
nums[j] = nums[j +1];
nums[j + 1] = temp;
}
}
}
printf("---\n");
for ( int i = 0 ; i <length; i++) {
printf("num[%i] = %i\n",i,nums[i]);
}
折半查找:
1.数组必须是有序的
2.必须知道 min 和 max 的值(范围值)
3.动态计算 mid(中间)的值
4.如果 mid 对应的值大于了需要查找的值,那么 max 要变小为 mid-1.
5.如果 mid 对应的值小于了需要查找的值,那么 max 要变小为 mid+1.