二分插入排序 和 二分检索
2009-02-10 00:22
267 查看
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
#define sortObject int*
void binarySort(sortObject array)
{
int mid, left, right, temp, i, j;
for(i = 1; i < N; i++)
{
left = 0;
right = i - 1;
temp = array[i];
while(left <= right)
{
mid = (left + right) / 2;
if(temp < array[mid])
right = mid - 1;
else
left = mid + 1;
}
for(j = i - 1; j >= left; j--)
array[j + 1] = array[j];
if(i != left)
array[left] = temp;
}
}
int binarySearch(int *array, int* postion, int key)
{
int mid, left, right, temp;
left = 0;
right = N - 1;
while(left <= right)
{
mid = (left + right) / 2;
if(array[mid] == key)
{
*postion = mid;
return 1;
}
else if(key < array[mid])
right = mid - 1;
else
left = mid + 1;
}
*postion = left;
return 0;
}
int main(int argc, char ** argv)
{
int a[] = {33, 14, 35, 21, 42, 66, 38, 67, 10, 79};
binarySort(a);
int i;
for(i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
printf("/n");
char *s;
int n = atoi(gets(s));
int* postion = (int *)malloc(sizeof(int));
binarySearch(a, postion, n);
printf("%d/n", *postion);
return 0;
}
#include <stdlib.h>
#include <string.h>
#define N 10
#define sortObject int*
void binarySort(sortObject array)
{
int mid, left, right, temp, i, j;
for(i = 1; i < N; i++)
{
left = 0;
right = i - 1;
temp = array[i];
while(left <= right)
{
mid = (left + right) / 2;
if(temp < array[mid])
right = mid - 1;
else
left = mid + 1;
}
for(j = i - 1; j >= left; j--)
array[j + 1] = array[j];
if(i != left)
array[left] = temp;
}
}
int binarySearch(int *array, int* postion, int key)
{
int mid, left, right, temp;
left = 0;
right = N - 1;
while(left <= right)
{
mid = (left + right) / 2;
if(array[mid] == key)
{
*postion = mid;
return 1;
}
else if(key < array[mid])
right = mid - 1;
else
left = mid + 1;
}
*postion = left;
return 0;
}
int main(int argc, char ** argv)
{
int a[] = {33, 14, 35, 21, 42, 66, 38, 67, 10, 79};
binarySort(a);
int i;
for(i = 0; i < N; i++)
{
printf("%d ", a[i]);
}
printf("/n");
char *s;
int n = atoi(gets(s));
int* postion = (int *)malloc(sizeof(int));
binarySearch(a, postion, n);
printf("%d/n", *postion);
return 0;
}
相关文章推荐
- 黑马程序员————java实现插入排序,附其改进--二分检索的插入排序
- Java排序算法——二分插入排序
- 排序算法(六)二分双插入排序
- 二分插入排序
- 插入排序,二分插入排序,希尔排序思想与比较
- 利用二分查找在循环递增数组中检索一个元素
- 《算法艺术与信息学竞赛》之 排序与检索 二分 URAL 1184 电缆
- 数据结构--加入二分查找的插入排序(优化)
- 三种插入排序的分析(直接插入-二分插入-Shell排序)
- 你真的会写二分检索吗?
- Java 实现二分(折半)插入排序
- 八大排序算法学习笔记:插入排序(二分插入排序)
- 插入排序&&二分插入排序
- 排序算法——二分插入排序
- 插入排序实现--直接实现,二分插入实现
- 排序算法之带二分查找的插入排序
- [算法] 彻头彻尾理解二分检索 6 种变换
- 二分检索的多种应用
- 插入类------二分插入排序