设为首页 加入收藏

TOP

七种排序算法的简单分析(一)
2013-04-10 11:40:30 来源: 作者: 【 】 浏览:1103
Tags:排序 算法 简单 分析

  #pragma once

  /**//*

  --- 冒泡排序 ---

  自下而上的两两比较,小泡排在大泡前,一趟冒出一个最小泡。

  */

  void BubbleSort(int nArray[], int nLength)

  {

  int i = nLength - 1;

  int j = 0;

  int temp = 0;

  for (int i = nLength - 1; i > 0; --i)

  {

  for (int j = nLength - 2; j >= nLength - i - 1 ; --j)

  {

  if (nArray[j] > nArray[j + 1])

  {

  temp = nArray[j + 1];

  nArray[j + 1] = nArray[j];

  nArray[j] = temp;

  }

  }

  }

  }

  /**//*

  --- 选择排序 ---

  自下而上的两两比较,记录最小数的下标,将最上面的数与最小数交换

  */

  void SelectSort(int nArray[], int nLength)

  {

  int tempIndex = 0;

  int tempValue = 0;

  for (int i = 0; i < nLength; ++i)

  {

  tempIndex = i;

  for (int j = i + 1; j < nLength; ++j)

  {

  if (nArray[tempIndex] > nArray[j])

  {

  tempIndex = j;

  }

  }

  tempValue = nArray[i];

  nArray[i] = nArray[tempIndex];

  nArray[tempIndex] = tempValue;

  }

  }

  /**//*

  --- 插入排序 ---

  将数据插入到已排序的序列中,边找合适的位置,边移动数据,找到合适位置插入数据。

  */

  void InsertSort(int nArray[], int nLength)

  {

  for (int i = 1; i < nLength; ++i)

  {

  int temp = nArray[i];

  int j = i;

  for (; j > 0 && nArray[j - 1] > temp; --j)

  {

  nArray[j] = nArray[j - 1];

  }

  nArray[j] = temp;

  }

  }

  /**//*

  --- 快速排序 ---

  是对冒泡排序的改进。

  1.先从数列中取出一个数作为基准数;

  2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边;

  3.再对左右区间重复第二步,直到各区间只有一个数.

  分区过程可以形象的描述为“挖坑填数”:

  1.将基准数nBase挖出形成第一个坑nArray[nLow];

  2.nHigh--由后向前找比nBase小的数,找到后挖出此数填前一个坑nArray[nLow]中;

  3.nLow++由前向后找比nBase大的数,找到后也挖出此数填到前一个坑nArray[nHigh]中;

  4.再重复执行2,3二步,直到nLow==nHigh,将基准数nBase填入nArray[nLow]中.

  */

  int AdjustArray(int nArray[], int nLow, int nHigh)

  {

  int nBase = nArray[nLow];

  while(nLow < nHigh)

  {

  while(nLow < nHigh && nBase <= nArray[nHigh])

  --nHigh;

  if (nLow < nHigh)

  {

  nArray[nLow++] = nArray[nHigh];

  }

  while(nLow < nHigh && nBase > nArray[nLow])

  ++nLow;

  if (nLow < nHigh)

  {

     

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++模板简单分析与举例 下一篇指针引用

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: