一、排序

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++ 排序&&查找算法(面试)的更多相关文章

  1. javascript排序 查找算法大全

    在pptv的实习结束了, 忙着找工作的事,顺便把数据结构的那本书重新复习了一遍.为了加深印象,特意把里面的常用的排序.查找算法用js写了一遍 具体的实例在我的github上,大家可以访问的: http ...

  2. 深入JDK源码之Arrays类中的排序查找算法(转)

    原文出处: 陶邦仁 binarySearch()方法 二分法查找算法,算法思想:当数据量很大适宜采用该方法.采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列 ...

  3. Java常用的排序查找算法

    public static void main(String[] args) {      // bubbleSort(); // int[] a = {20,2,10,8,12,17,4,25,11 ...

  4. Java数据结构 遍历 排序 查找 算法实现

    请查看:http://blog.csdn.net/zhanghao_hulk/article/details/35372571#t13

  5. PHP的排序算法跟查找算法

    排序算法: (1)冒泡排序 $arr = array(15,8,20,50,37,85,10,5,11,4); //冒泡排序 function maoPao($arr){ for($i = 0; $i ...

  6. C# 基础排序与查找算法

    排序算法: class Sort { static void swap<T>(ref T a, ref T b) { T tmp = a; a = b; b = tmp; } #regio ...

  7. 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 ...

  8. php 中的查找算法 和 排序方法(多字段排序)

    一.查找算法 1.顺序查找(一个一个查,效率低,不用多说) 2.二分查找 /* php 二分查找 在$a数组里查找$x的位置 $a必须是一个以升序排序后的数组 */ function binsearc ...

  9. python实现折半查找算法&&归并排序算法

    今天依旧是学算法,前几天在搞bbs项目,界面也很丑,评论功能好像也有BUG.现在不搞了,得学下算法和数据结构,笔试过不了,连面试的机会都没有…… 今天学了折半查找算法,折半查找是蛮简单的,但是归并排序 ...

随机推荐

  1. DataTable排序的一般方法

    一.重生法dstaset.Tables.Add(dt)dataset.Tables(0).DefaultView.Sort = "id desc" 二.直接法dv = New Da ...

  2. JQuery获取和设置Select选项常用方法总结 (转)

    1.获取select 选中的 text: $("#cusChildTypeId").find("option:selected").text(); $(&quo ...

  3. Shortcut 常用快捷键

    多行注释: VS2010:   / NotePad++: Ctrl Q Xcode:    CMMND / 回到光标所在之前位置 VS2010: Ctrl +/- 关闭当前页: VS2010: 鼠标中 ...

  4. openstack-L版安装

    参照官方install document: http://docs.openstack.org/liberty/install-guide-rdo/ 实验环境:centos7.2 桥接: 192.16 ...

  5. hdu City Game

    做这题之前建议做一下hdu1506题,两道题是极度相似的题,不同的是这个要处理的是m行,所以可以用一个dp[][]数组存储矩形的高度,之后就变成hdu1506了. 例如测试样例: 0 1 1 1 1 ...

  6. Phaser.Game这个函数都有哪些参数

    Phaser是一个简单易用且功能强大的html5游戏框架,利用它可以很轻松的开发出一个html5游戏.在这篇文章中我就教大家如何用Phaser来制作一个前段时间很火爆的游戏:Flappy Bird,希 ...

  7. lucene 3.0.2 搜索

    1.lucene 词频 转载:http://mxdxm.iteye.com/blog/989031 lucene in action作为action系列,确实坚持了其实用性的特色.全书花了很大的篇幅来 ...

  8. HDU 2094 产生冠军(半拓扑排序+map)

    产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  9. [IT扫盲]软件测试时期版本的称呼

    有时候搞不懂,还没发布时的软件怎么会就有那么多版本,今天彻底想了解一下. 早有人写好了. 请参考这里: http://baike.baidu.com/view/707808.htm#1_2 测试版 α ...

  10. Apache Storm 衍生项目之1 -- storm-yarn

    欢迎转载,转载请注明出处,徽沪一郎. 概要 storm是一个近似于实时的计算框架,甩开hadoop上的原生mapreduce计算框架不只一条街.如果能将storm引入到hadoop中,对存储于hdfs ...