您的位置:首页 > 其它

插入排序 二分查找

2014-12-10 17:47 239 查看
//    //插入排序
//二分查找
int start = 0, end = count - 1,mid = 0;
int n;
printf("please input a number\n");
scanf("%d", &n);
while ( start <= end) {
mid  = (start  + end) / 2;
if (array[mid]  > n) {
end = mid - 1;
} else if (array[mid]  < n){
start = mid + 1;
}
else {
break;
}
}

if (array[mid] == n) {
printf("[%2d]: %2d\n", mid , array[mid]);

}else {
printf(" not found\n");
}
用函数处理数组
void swap(int *p1 , int *p2)
{   if (p1 != p2){
int temp = *p1;
*p1 = *p2;
*p2 = temp;
}

}
void printArray(int count ,  const int array[])
{
for (int i = 0; i < count; i++) {
printf("array[%2d] = %2d\n", i, array[i]);
}
}
void bubbleSort(int count , int array[])
{
int flag =  1;
for (int i = 0; i < count - 1 && 1 == flag; i++) {
flag = 0;
for (int j = 0; j < count - i - 1; j++) {
if (array[j] < array[j + 1]) {
swap(array + j, array + j + 1);
flag = 1;

}
}
}

}
void selectionSort(int count , int array[])
{
int minIndex = 0;
for (int i = 0; i < count - 1; i++) {
minIndex = i;
for (int j = minIndex + 1; j < count; j++) {
if (array[minIndex] > array[j]) {
minIndex = j;
}
}
if (minIndex != i) {
swap(array  + minIndex, array + i);

}
}

}
void insertSort(int count , int array[])
{
for (int i = 1; i < count; i++) {
int j = i;
int temp = array[j];
while ( j > 0 && temp < array [j - 1]) {
array[j] = array [j - 1];
j--;
}
array[j] = temp;
}

}
int halfSeek(int count,  const  int array[],int target)
{
int start = 0, end = count - 1, mid =0;
while (start <= end) {
mid = (start + end ) / 2 ;
if (array[mid] > target) {
end = mid -1;
}  else if (array[mid] < target) {
start = mid - 1;
} else {
return mid;
}

}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: