冒泡排序法
for(int i=0;inums[j+1])
{
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
选择排序法
void Sort(int[ ]a) {
int min;//用来存储比较后的元素的最小值
int minindex;//用来记录最小值的下标
for (int i = 0; i < a.Length - 1; i++) {
min = a[i];
minindex = i;
for (int j = i + 1; j < a.Length; j++) {
if (a[j] < min) {
//记录最小值和其所对应的下标
min = a[j];
minindex = j;
}
}
//交换值
a[minindex] = a[i];
a[i] = min;
}
}
相同点:
1.都要通过n-1组排出具有n个数的顺序;
2.都是通过逐个相比,比出最值的;
不同点:
1.冒泡法,顾名思义就是把小的泡冒到上面,大的泡沉到下面,最值在中间和其他的值交换;
而选择法,是假定了一个最值,所以最值和其他的值的交换就发生在假定最值的地方;
二分查找
while (low <= high) {
//mid代表中间索引,不能放到while循环的外面
int mid = (low + high) / 2; if (a[mid] == key) {
Console.WriteLine("find key,index=" + mid); return mid;
}
//如果中间的数大于要查找的数,把后面一半数组去掉
else if (a[mid] > key)
{
high = mid - 1;
}
else //小于要查找的数,把前面一半的值去掉{
low = mid + 1;
}
}