为基准,接下来从 a[0]...a[9]
中找出最小的元素,将其与 a[0]交换,然后将基准位置右
移一位,重复上面的动作,比如,以 a[1]为基准,找出 a[1]至 a[9]中最小的,将
其与 a[1]交换,一直进行到基准位置移到数组最后一个元素时排序结束(此时
基准左边所有元素均递增有序,而基准为最后一个元素,故完成排序)。
4.直接插入排序算法
直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到
已排好序的有序表中,从而得到一个新的,记录数增 1 的有序表。
一般情况下,第 i 趟直接插入排序的操作为:在含有 i-1 个记录的有序子序列
r[1...i-1]中插入一个记录 r[i]后,变成含有 i 个记录的有序子序列 r[1....i].在自 i-1
起往前搜索的过程中,可以同时后移记录。
整个排序过程为进行 n-1 躺插入,即:先将序列中的第一个记录看成是一个有
序的子序列,然后从第二个记录起逐个进行插入,直至整个序列变成按关键字
非递减有序序列为止
5.二分插入排序算法
在直接插入排序的基础上,当待排序序列中的记录数量 n 很大时,为了减
少“比较”和“移动”这两种操作次数,有一种方法叫二分插入法。
6.快速排序算法
快速排序算法是对起泡排序的一种改进。
算法思路:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录
的关键字均比另一部分记录的关键字小,则可分别对这两部分记录继续进行排
序,以达到整个序列有序。在这种方法中,n 个元素被分成三段(组):左段:
left,右段 right 和中段 middle.中段仅包含一个元素。左段中各元素都小于等于中
段元素。因此 left 和 right 中的元素可以独立排序,并且不必对 left 和 right 的排
序结果进行合并。使用快速排序方法对 a[0 到 n-1]排序,从 a[0 到 n-1]中选择一个
元素作为 middle,该元素为支点把余下的元素分割为两段 left 和 right,使得 left 中
的元素都小于等于支点,而 right 中的元素都大于等于支点,递归地使用快速排
序方法对 left 进行排序,递归地使用快速排序方法对 right 进行排序所得结果为
left+middle+right。
三.程序代码
1.二分查找算法
#include <iostream>
using namespace std;
int MyBinarySearch(int search, int * number, int start, int end)
{
int low = start;
int high = end;
评论0
最新资源