本帖最后由 408205555 于 2015-7-21 19:45 编辑
//选择排序,从小到大排列。
void main(char argc.const char * argv[]){
int number[6]={2,1,3,7,4,9}; //定义数组
int temp=0; //相当于数字交换中转站
int length=sizeof(number)/sizeof(int); //计算数组的长度
for(int i=0;i<length-1;i++){ //循环遍历数组,每循环一次,确定一个最小的数,下次参与循环的数字就会减一个
for(int j=i+1;j<length;j++){ //让前一个数与后一个数做比较
if(number>number[j]){ //如果前一个数>后一个数
temp=number; //把前一个数赋值给temp,这三段代码是让前后两个数字交换位置
number=number[j];
number[j]=temp;
}
}
}
}
//折半选择
//如果key大于中间值,则让最小值=中间值+1
//如果key小于中间值,则让最大值=中间值-1
//如果最小值大于最大值,则证明要找的数不存在
void main(char argc.const char * argv[]){
int number[]={3,4,12,20,21,23,28,45,67,100};
//查找20
int low=0;
int high=sizeof(number)/sizeof(int)-1;
int mid=0;
//要查找的数
int key=20;
while(min<=max){
mid=(low+high)/2;
if(key>number[mid]){
low=mid+1;
}else if(key<number[mid]){
high=mid-1;
}else{
printf("找到了");
}
}
printf("没找到");
} |
|