C++选择排序算法实例

 更新时间:2014年10月09日 08:56:48   作者:果冻想  
这篇文章主要介绍了C++选择排序算法实例,本文先是介绍了什么是选择排序,然后给出了实现代码,需要的朋友可以参考下

选择排序

选择排序是一种简单直观的排序算法,它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。选择排序的时间复杂度也为O(n^2)。

代码实现

复制代码 代码如下:

#include <iostream>
using namespace std;
 
void SelectSort(int arr[], int length)
{
     int temp, min;
     for (int i = 0; i < length - 1; ++i)
     {
          min = i;
 
          // 寻找最小值
          for (int j = i + 1; j < length; ++j)
          {
               if (arr[j] < arr[min])
                    min = j;
          }
 
          // 交换
          if (min != i)
          {
               temp = arr[i];
               arr[i] = arr[min];
               arr[min] =temp;
          }
     }
}
 
int main()
{
     int arr[10] = {2, 4, 1, 0, 8, 4, 8, 9, 20, 7};
 
     SelectSort(arr, sizeof(arr) / sizeof(arr[0]));
 
     for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i)
     {
          cout<<arr[i]<<" ";
     }
     cout<<endl;
 
     return 0;
}

相关文章

  • c++编写String类代码实例

    c++编写String类代码实例

    这篇文章主要介绍了c++编写String类,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • CMake语法及CMakeList.txt简单使用小结

    CMake语法及CMakeList.txt简单使用小结

    Cmake主要用于开发跨平台的C++项目,本文主要介绍了CMake语法及CMakeList.txt简单使用小结,具有一定的参考价值,感兴趣的可以了解一下
    2022-05-05
  • C语言数据结构之单链表的实现

    C语言数据结构之单链表的实现

    链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。本文将用C语言实现单链表,需要的可以参考一下
    2022-06-06
  • C语言打印菱形实例详解

    C语言打印菱形实例详解

    这篇文章主要给大家介绍了关于C语言如何打印菱形的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • C++编程中使用设计模式中的policy策略模式的实例讲解

    C++编程中使用设计模式中的policy策略模式的实例讲解

    这篇文章主要介绍了C++编程中使用设计模式中的policy策略模式的实例讲解,文章最后对策略模式的优缺点有一个简单的总结,需要的朋友可以参考下
    2016-03-03
  • C++ 中函数重载、覆盖与隐藏详解

    C++ 中函数重载、覆盖与隐藏详解

    这篇文章主要介绍了C++ 中函数重载、覆盖与隐藏详解的相关资料,需要的朋友可以参考下
    2017-05-05
  • C++实现逆波兰表达式的例题详解

    C++实现逆波兰表达式的例题详解

    逆波兰表达式由波兰的逻辑学家卢卡西维兹提出,它的特点是:没有括号,运算符总是放在和它相关的操作数之后。本文将通过例题讲讲如何利用C++实现逆波兰表达式,需要的可以参考一下
    2022-12-12
  • C++ ReSharper2021激活码永久有效

    C++ ReSharper2021激活码永久有效

    ReSharperC++是为c/c++开发者打造的一款实用Visual Studio扩展插件,这款插件旨在提升开发者的效率,今天给大家分享这款软件的激活方法,需要C++ ReSharper2021激活码的朋友参考下本文
    2021-06-06
  • C语言开发之归并排序详解及实例

    C语言开发之归并排序详解及实例

    这篇文章主要介绍了 C语言开发之归并排序详解及实例的相关资料,需要的朋友可以参考下
    2017-03-03
  • 带你了解C++初阶之引用

    带你了解C++初阶之引用

    这篇文章主要为大家介绍了C++初阶之引用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01

最新评论