一、排序

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. LightOJ1122 Digit Count(DP)

    dp[i][j]表示长度i末尾为S[j]的方案数 dp[1][0...m-1]=1 dp[i][j]=∑dp[i-1][k] (|S[k]-S[j]|<=2) #include<cstdi ...

  2. BZOJ3672 : [Noi2014]购票

    设d[i]表示i到1的距离 f[i]=w[i]+min(f[j]+(d[i]-d[j])*v[i])=w[i]+d[i]*v[i]+min(-d[j]*v[i]+f[j]) 对这棵树进行点分治,每次递 ...

  3. 数据仓库原理<1>:数据库与数据仓库

    updated 2015.8.27 updated 2015.8.26 updated 2015.8.23 0. 说明 <数据仓库原理>系列博文,是笔者在学习数据仓库与商业智能时的读书笔记 ...

  4. windows raid mode重新安装系统(win10)

    常规安装模式: STEP 1 进入bios 将高级设置中,引导模式设置为传统(旧模式)模式,一般存在legacy (旧模式),uefi with csm ,uefi without csm 三个模式, ...

  5. esper 事件引擎,各种事件类型示例代码

    原创文章 转载请注明出处 package com.hp.iot.engine.esper; import java.util.ArrayList; import java.util.HashMap; ...

  6. JAVA图片处理--缩放,切割,类型转换

    import java.io.*; import java.awt.*; import java.awt.image.*; import java.awt.Graphics; import java. ...

  7. 如何在spring框架中解决多数据源的问题

    在我们的项目中遇到这样一个问题:我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库.我们以往在spring和hibernate框架中总是配置一个数据源,因而sessi ...

  8. js判断鼠标位置是否在某个div中

    div的onmouseout事件让div消失时,会出现这样的情况,就是当鼠标移至div中的其它内容时,此时也判定为离开div,会触发 onmouseout事件,这样div中的内容就不能操作了.解决的办 ...

  9. Git 的使用感受

    Git 的使用感受 从开始工作到现在,在公司里面一直用 svn 来做版本管理.大约半年前听说了 Git,因为 Git 的光辉相当耀眼,作者是 Linus Torvalds,被大量的开源软件采用,如 j ...

  10. rbegin 和 end 区别

    在使用C++的STL时,经常会用到迭代器,那么不得不搞清楚里面的一些指针 begin(), end(), rbegin(), rend()之间的区别与联系,以及它们分别都指向哪个元素.首先要明白的一点 ...