C/C++ 排序&&查找算法(面试)
一、排序
1.冒泡排序
void BubbleSort(int array[],int n)
{
int i=;
int j=;
int temp=;
int flag = ;
for(i=;i<n - ;i++) /*外循环控制排序的总趟数*/
{
flag = ; /*本趟排序开始前,交换标志应为假*/
for(j=n-;j > i;j--) /*内循环控制一趟排序的进行*/
{
if(array[j] < array[j-] ) /*相邻元素进行比较,若逆序就交换*/
{
temp =array[j];
array[j] = array[j-];
array[j-] = temp;
flag = ; /*发生了交换,故将交换标志置为真*/
} }
if (flag == ) /*本趟排序未发生交换,提前终止算法*/
break;
}
}
冒泡排序--递归实现
void SortByRecursion( int *array, int n )
{
int i;
if( == n)
{
return;
}
for(i = ; i < n - ; i++)
{
if(array[i] > array[i + ])
swap( &array[i], &array[i + ]);
}
SortByRecursion( array, n - );
}
2.插入排序
//插入排序(非递归)
void InsertSort(int *pArr, int nLength)
{
if (pArr == NULL || nLength <= )
{
return;
} int key = ;
int j=;
for (int i=; i<nLength; i++)
{
if (pArr[i] < pArr[i-])//当前带插入的元素比有序序列的最后一个元素小
{
key = pArr[i];
for (j=i-; j>=&&key<pArr[j]; j--)
{
pArr[j+] = pArr[j];
}
pArr[j+] = key;
}
}
}
插入排序---递归实现
//插入排序(递归)
void InsertSortRecursively(int *pArr, int index, int nLength)
{
if (index >= nLength)
{
return;
} int key = pArr[index];//记录当前待插入的元素
int i=;
for (i=index-; i>=&&key<pArr[i]; i--)
{
pArr[i+] = pArr[i];
}
pArr[i+] = key;
InsertSortRecursively(pArr, index+, nLength);
}
3.快速排序
int PartSort(int arr[],int low, int high)
{
int key = arr[low];
while(low < high)
{
while(low < high && arr[high] >= key)
--high;
arr[low] = arr[high];
while(low < high && arr[low] <= key)
++low;
arr[high] = arr[low];
}
arr[low] = key;
return low;
}
void QuickSort(int arr[],int low, int high)
{
if(low < high)
{
int pos = PartSort(arr, low, high);
QuickSort(arr, pos+, high);
QuickSort(arr, low, pos-);
}
}
二、查找
1.折半查找
int HalfFind(int arr[], int count,int key)
{
int low = ;
int high = count - ;
while(low <= high)
{
int mid = (low + high)/;
if (arr[mid] == key)
{
return mid;
}
else if(arr[mid] > key)
{
high = mid - ;
}
else
{
low = mid + ;
}
}
}
C/C++ 排序&&查找算法(面试)的更多相关文章
- javascript排序 查找算法大全
在pptv的实习结束了, 忙着找工作的事,顺便把数据结构的那本书重新复习了一遍.为了加深印象,特意把里面的常用的排序.查找算法用js写了一遍 具体的实例在我的github上,大家可以访问的: http ...
- 深入JDK源码之Arrays类中的排序查找算法(转)
原文出处: 陶邦仁 binarySearch()方法 二分法查找算法,算法思想:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列 ...
- Java常用的排序查找算法
public static void main(String[] args) { // bubbleSort(); // int[] a = {20,2,10,8,12,17,4,25,11 ...
- Java数据结构 遍历 排序 查找 算法实现
请查看:http://blog.csdn.net/zhanghao_hulk/article/details/35372571#t13
- PHP的排序算法跟查找算法
排序算法: (1)冒泡排序 $arr = array(15,8,20,50,37,85,10,5,11,4); //冒泡排序 function maoPao($arr){ for($i = 0; $i ...
- C# 基础排序与查找算法
排序算法: class Sort { static void swap<T>(ref T a, ref T b) { T tmp = a; a = b; b = tmp; } #regio ...
- PHP数组基本排序算法和查找算法
关于PHP中的基础算法,小结一下,也算是本博客的第一篇文章1.2种排序算法冒泡排序:例子:个人见解 5 6 2 3 7 9 第一趟 5 6 2 3 7 9 5 2 6 3 7 9 5 2 3 6 7 ...
- php 中的查找算法 和 排序方法(多字段排序)
一.查找算法 1.顺序查找(一个一个查,效率低,不用多说) 2.二分查找 /* php 二分查找 在$a数组里查找$x的位置 $a必须是一个以升序排序后的数组 */ function binsearc ...
- python实现折半查找算法&&归并排序算法
今天依旧是学算法,前几天在搞bbs项目,界面也很丑,评论功能好像也有BUG.现在不搞了,得学下算法和数据结构,笔试过不了,连面试的机会都没有…… 今天学了折半查找算法,折半查找是蛮简单的,但是归并排序 ...
随机推荐
- BZOJ4377 : [POI2015]Kurs szybkiego czytania
因为$a$与$n$互质,所以对于$0$到$n-1$里每个$i$,$ai\bmod n$的值互不相同. 设匹配成功的起点为$i$,那么可以得到$3m$段$ai\bmod n$的值不能取的禁区,每段都是连 ...
- 【BZOJ】2875: [Noi2012]随机数生成器(矩阵乘法+快速乘)
http://www.lydsy.com/JudgeOnline/problem.php?id=2875 矩阵的话很容易看出来.....我就不写了.太水了. 然后乘法longlong会溢出...那么我 ...
- 【wikioi】1034 家园(最大流+特殊的技巧)
http://wikioi.com/problem/1034/ 太神了这题. 其实一开始我以为是费用流,但是总感觉不对. 原因是我没看到一句话,特定的时刻到达特定的点!! 也就是说,并不是每艘船每次都 ...
- 验证标题是否存在(TextBox控件失去焦点验证)
首先解释两个属性, AutoPostBack 属性用于设置或返回当用户在 TextBox 控件中按 Enter 或 Tab 键时,是否发生自动回传到服务器的操作. 如果把该属性设置为 TRUE,则启用 ...
- Word 2010 给公式添加序号
在写paper的时候,我们常常要给公式编号,难道我们要在公式和最右边的序号之间疯狂按空格键吗,当然不是,我们可以有更高效的方法来完成. 首先我们插入一个1x3的表格,然后调节首尾两个格子的大小,借助标 ...
- 转:值得推荐的C/C++框架和库(真的很强大)
目录(?)[+] 值得学习的C语言开源项目 - 1 Webbench - 2 Tinyhttpd - 3 cJSON - 4 CMockery - 5 Libev - 6 Memcached - 7 ...
- html5文章 -- HTML5开发实例-网易微博手机Web App开发过程
HTML5在国内外越来越受到互联网开发团队的青睐.国外,谷歌兴致勃勃地开发Chrome Web Store,微软发布了支持使用HTML5技术开发的“Irish Spring”主题网站,诺基亚斥巨资购得 ...
- 全屏滚动-jQuery插件实现
全屏滚动 <---很久没写了,这段忙了点,以后还是每周尽量写点东西---> 在很多情况下,我们需要页面的全屏滚动,尤其是移动端.今天简要的介绍一下全屏滚动的知识. 一.全屏滚动的原理 1. ...
- maven-surefire-plugin总结
Maven通过Maven Surefire Plugin插件执行单元测试.(通过Maven Failsafe Plugin插件执行集成测试) 在pom.xml中配置JUnit,TestNG测试框架的依 ...
- [ZZ] HDR the bungie way
http://blog.csdn.net/toughbro/article/details/6755394 bufferencoding游戏float算法 bungie 06年,gamefest上的p ...