排序法 二分查找法
来源:互联网 发布:qq邮箱端口和发送smtp 编辑:程序博客网 时间:2024/05/16 17:47
// test.cpp : Defines the entry point for the console application.
//whg 2007-12-26
#include "stdafx.h"
#include <stdlib.h>
#include <time.h>
//折半查找法 二分查找法
int BinarySearch(int a[],int x,int n)
{
int left=0;
int right=n-1;
while (left <= right)
{
int middle=(left+right)/2;
if (x==a[middle])
{
return middle;
}
else
{
if (x >a[middle])
{
left=middle+1;
}
else
{
right=middle-1;
}
}
}
return -1;
}
//选择排序法
void SelectSort(int arr[],int n)
{
int i,j;
int temp;
int index;
for (i=0;i<n;i++)
{
temp=arr[i];
index=i;
for (j=i+1;j<n;j++)
{
if (temp > arr[j])
{
temp=arr[j];
index=j;
}
}
arr[index]=arr[i];
arr[i]=temp;
}
}
//冒泡排序法
void BubbleSort(int arr[],int n)
{
int i,j;
int temp;
for (i=n-1;i>0;i--)
{
for (j=i-1;j>=0;j--)
{
if (arr[i]<arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
//双向冒泡排序法
void Bubble2Sort(int arr[],int n)
{
int i,j;
int index,temp;
int left=0;
int right=n-1;
do
{
//正向
for (i=right;i>left;i--)
{
if (arr[i] < arr[i-1])
{
temp=arr[i];
arr[i]=arr[i-1];
arr[i-1]=temp;
index=i;
}
}
left=index;
//反向
for (j=left;j<right;j++)
{
if (arr[j] > arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
index=j;
}
}
right=index;
} while (left < right);
}
//希尔排序法
void ShellSort(int arr[],int n)
{
int i,j;
int temp;
int len=n/2;
for (i=n;len>0;len--)
{
for (j=0;j<n-len;j++)
{
if (arr[j] > arr[j+len])
{
temp=arr[j];
arr[j]=arr[j+len];
arr[j+len]=temp;
}
}
}
}
//快速排序法
void QuickSort(int arr[],int left,int right)
{
int i,j;
int middle,temp;
i=left;
j=right;
middle=arr[(left+right)/2];
do
{
while((arr[i]<middle) && (i<right))
i++;
while((arr[j]>middle) && (j>left))
j--;
if (i <= j)
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
i++;
j--;
}
} while (i <= j);
if (left < j)
{
QuickSort(arr,left,j);
}
if (right > i)
{
QuickSort(arr,i,right);
}
}
int main(int argc, char* argv[])
{
//长度为50的自然数数组
int n[50];
int count=100;
for(int i=0;i<50;i++)
{
n[i]=count;
count=count-2;
}
//显示数组
for (int j=0;j<50;j++)
{
if (j != 49)
{
printf("%d,",n[j]);
}
else
{
printf("%d",n[j]);
}
}
printf("/n");
BubbleSort(n,50);
//显示数组
for (int k=0;k<50;k++)
{
if (k != 49)
{
printf("%d,",n[k]);
}
else
{
printf("%d",n[k]);
}
}
printf("/n");
//生成一个0到100的随机数
srand((unsigned)time(NULL));
int m=rand()%101;
printf("%d/n",m);
//利用折半查找法 在数组中查找这个数
int index = BinarySearch(n,m,50);
printf("%d/n",index);
return 0;
}
- 排序法 二分查找法
- 冒泡排序、选择排序、二分查找法
- 选择排序 快速排序 二分查找法
- 菜鸟学排序----二分查找法
- 查找----二分查找法
- 冒泡排序法,选择排序,二分查找法
- C语言:编写查找和排序函数(二分查找,冒泡排序,选择排序法)
- 二分查找法,查找string
- 【排序】冒泡排序法and针对数组的普通查找法和二分查找法
- 【排序】冒泡排序法and针对数组的普通查找法和二分查找法
- 基于二分查找的排序法(抓牌法)
- MFC学习记录--冒泡排序与二分查找法
- JS编写冒泡排序法和二分查找
- JAVA操作数组----二分查找法,冒泡排序
- 三种数组排序算法(冒泡排序、选择排序、插入排序、二分查找法)
- 二分排序与二分查找
- 二分排序与二分查找
- 二分排序与二分查找
- 利用MagicLibrary控件实现类似VsNet平台界面
- 我来啦,大家好
- ODBC
- word目录ctrl不能跟踪的问题
- asp.net控件开发基础(17) --------初识数据绑定控件
- 排序法 二分查找法
- “朋友”两个字好辛苦
- C#中利用Excel(宏)做高级报表
- defer的作用
- Raiders of the Lost Ark
- Internet上抓取指定URL的源码的方案(C#)
- oralce+VO+DAO+servlet+jsp+el
- 如何选择你满意的报表工具
- jbuilder 2006中+hibernate