- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
排序查找算法
排序查找算法
一:数组常用排序算法:
1):冒泡排序(Bubble sorting)
算法思想: 相邻2个数比较大小,小者往前移动,一趟比较完后,最小的数冒到最前面,较
大的数(重者)慢慢沉下去,排列到数组的后面.如果有n个数,经过n-1趟比
较,数组中的数便已经排序(升序)的数。
程序代码:
void bubble_sort(int arr[],int size)
{
int temp,flag;
int i,j;
for(int i=0;isize;i++)
{
flag=0;
for(int j=size-1;ji;j--)
{
if(arr[j]arr[j-1])
{
temp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=temp;
flag=1;
}
}
if(flag==0)break;
}
}
2):交换排序(Swap sorting)
算法思想:
第1个元素的值与后面的所有元素的值比较大小,如果其中一个值比第1个值
小,进行交换。领奖类推,再将第2个元素与后面的所有元素比较交换,直到
n-1个元素为止。
程序代码:
void swap_sort(int arr[],int size)
{
int temp;
int i,j;
for(i=0;isize;i++)
for(j=i+1;jsize;j++)
if(arr[j]arr[i])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
3):选择排序(Select sorting)
算法思想:
交换排序有一个缺点:如果数列后面的数据比前面的数据小,每一趟比较都会
产生多次无谓的交换,浪费系统时间。选择排序的基本思想是:若有n个数,假
设第1位存放最小的数,将此数与后面的所有数进行比较。用下标变量k来记录
最小数所在的元素的下标。一趟比较完成后,将arr[0]与arr[k]进行交换。然后设
第2位存放次小的数,依次类推。
程序代码:
void select_sort(int arr[],int size)
{
int i,j,k;
int temp;
for(i=0;isize;i++)
{
k=i;
for(j=i+1;jsize;j++)
if(arr[j]arr[k])
k=j;
if(k!=i)
temp=arr[i],arr[i]=arr[k],arr[k]=temp;
}
}
4):直接插入排序(Insert sorting)
算法思想:
将第1个数视为有序序列,然后依次将后续各数逐个插入到该有序序列中。
程序代码:
void insert_sort(int arr[],int size)
{
int i,j;
int temp;
for(i=1;isize;i++)
{
temp=arr[i];
for(j=i-1;j=0;j--)
if(temparr[j])
arr[j+1]=arr[j];
else
break;
arr[j+1]=temp;
}
}
二:数组的查找算法:
1):顺序查找
算法思想:
依照数组中元素的顺序,依次进行比较,以查找出元素的位置。
程序代码:
int SequenceSearch(int arr[],int key,int size)
{
int i;
for(i=0;isize;i++)
if(arr[i]==key)
return i;
return -1;
}
2):折半查找
算法思想:这种查找方法是针对已经排序的数组进行的一个查找方式,折半查找极
大的提高了查找的性能,但是它是以排序数组为代价来换的。
程序代码:
int BinarySearch(int arr[],i
文档评论(0)