`
kmplayer
  • 浏览: 512352 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

各式各样的排序算法

阅读更多
1,选择排序.
核心思想:n个数,两重for循环,第一重n-1次,第k次选出第k小的数的下标index,交换下标index和k-1的值.
#include <iostream>

using namespace std;

void SelectSort(int r[ ], int n)
{
    int m=0;
    int i;
    int j;
    int index;
    int temp;
    for (i=0; i<n-1; i++)                  //对n个记录进行n-1趟简单选择排序
    {
       index=i;
       for (j=i+1; j<n; j++)            //在无序区中选取最小记录
            if (r[j]<r[index])
             index=j;
       if (index!=i)
       {
          temp=r[i];
          r[i]=r[index];
          r[index]=temp;
          m+=3;
       }
    }
    for(i=0;i<n;i++)
        cout<<r[i]<<" ";
    cout<<"\n"<<"移动次数:"<<m<<"\n";
}

int main()
{

  const int numv=11; //赋值

  int y[]={8,2,11,6,1,10,3,9,5,4,7};
  cout << "\n简单选择排序前:" << "\n";
  for(int j=0;j<numv;j++)
      cout<<y[j]<<" ";

  cout << "\n简单选择排序结果为:" << "\n";
  SelectSort(y,numv);
}

2,冒泡排序
核心思想:第一次0到n-1,第二次0到exchange.分别比较j和j+1,前者大于后者,交换元素.设一个exchange,记录发生交换的最大的那个j,说明j之后的元素已经排序完毕.当exchange=0时,没有元素发生交换,此后排序完毕.
#include <iostream>
using namespace std;

//冒泡排序
void BubbleSort(int r[], int n)
{
    int tag;
    for(int i=0;i<n-1;i++)
    {
        tag=false;
        for(int j=0;j<n-i-1;j++)
        {
            if(r[j]>r[j+1])
            {
                r[j]^=r[j+1];
                r[j+1]^=r[j];
                r[j]^=r[j+1];
            }
            tag=true;
        }
        if(!tag) break;
    }
    for(int i=0;i<n;i++)
       cout<<r[i]<<" ";
    cout<<endl;
}

int main()
{

    const int numv=11; //赋值

    int y[]={8,2,11,6,1,10,3,9,5,4,7};
    cout << "\n冒泡排序前:" << "\n";
    for(int j=0;j<numv;j++)
        cout<<y[j]<<" ";
    cout << "\n冒泡排序结果为:" << "\n";
    BubbleSort(y,numv);
}
分享到:
评论

相关推荐

    数据结构 上机答案 数据结构 上机答案 数据结构 上机答案

    解决方案使用冒泡排序算法,即通过交换元素来实现排序。这个算法的时间复杂度为O(n^2),其中n是数组的长度。 1.17 Status fib(int k,int m,int &f) //求 k 阶斐波那契序列的第 m 项的值 f 这道题目要求编写一个...

    136个c程式范例的光碟

    这些范例中的算法实现部分可能会涵盖从基础排序算法到复杂的数据结构操作,这对于提升编程者解决实际问题的能力至关重要。因为无论是在校学习还是工作中,算法与数据结构都是评价一个程序员能力的重要标准。 值得一...

    js树形菜单各式各样特效

    另外,对于性能和复杂需求,还可以使用原生JavaScript结合数据结构和算法实现,如递归遍历和深度优先搜索等。 总结来说,JavaScript树形菜单特效是网页交互设计中的一个重要元素,它通过动态效果和多种功能增强用户...

    互联网网页文本对象抽取实现技术本科毕业论文.doc

    为了应对信息爆炸带来的严重挑战,抽取、集成网页上各式各样的文本对象信息,进行对象级别的搜索,迫切需要一些自动化的技术帮助人们在海量信息中迅速找到自己真正需要的信息。 三、基于HTML特征和机器学习的博客...

    Python cookbook(数据结构与算法)字典相关计算问题示例

    问题:在字典上对数据执行各式各样的计算(比如求最小值、最大值、排序)。 解决方案:利用zip()将字典的键-值对“反转”为值-键对序列。 例如:如下字典存放的股票名称和对应的价格: &gt;&gt;&gt; prices = { 'ACME': ...

    搜索引擎中的web数据挖掘.pdf

    目标是充分理解网页内容,为搜索引擎排序提供准确的网页属性。网页属性的提取和分析对于搜索引擎的精准度至关重要。 Web数据挖掘的基础环节是HTML解析,将网页源代码(HTML字符串)转换为可以计算与理解的数据结构...

    利用FPGA设计万兆网络摄像头.docx

    该设计采用 VHDL 语言和 Vivado 集成开发环境,完成了图像采集算法、UDP 协议传输、COMS 控制、FIFO 控制、UDP 发送、参数配置等模块的设计,并进行了时序测试等工作。 FPGA 是一种现场可编程门阵列芯片,它的内部...

    利用FPGA设计万兆网络摄像头.pdf

    它的特点是数据包不要求按照排序先手传输,而只提供数据包的序号,排序的内容交给应用层来完成。 系统设计采用了 COMS 视频采集控制、视频图像的网络传输等功能,硬件采用 COMS 模组,通过配置 COMS 模组的相关...

    LoadRunner性能测试工具实战视频教程【全套26集】

    由于它跟SQL语句相关,在真实环境下,同一时间可能执行着不同类型的SQL,即便是同一类型,其参数也各式各样。那么,怎样才能模拟出最符合实际情况的性能测试场景呢? 首先设计场景,即,在LoadRunner中按照比例随机...

    网趣网上购物系统HTML静态版v2012版

    软件代码多重过滤可以第一时间被搜索引擎收录,独特的静态生成算法可以大大减轻服务器的负担,无论在生成速度还是安全方面都达到国内领先水平。 二、生成过程更简单易用、更直观方便! 网趣HTML静态版V2012采用...

Global site tag (gtag.js) - Google Analytics