c++选择排序详解

选择排序,作为八大经典算法之一,虽不如插入,快速,希尔等排序高效,但其结构简单,思路清晰,适合新手理解算法, 了解排序,适合数据较少时的排序情况。

如下是选择排序的图解原理

如果说冒泡排序是顶向下,那么选择排序就是由底向上了,先解决第一个数,再解决第二个数,依次解决整个数组的排序

如下是全部代码的实现

#include <iostream>
#include <math.h>//待会会用到swap交换函数
using namespace std;
int main()
{

  int a[10];
  //输入数据
  for(int i=0;i<10;i++)
  {
    cin>>a[i];
  }
  //排序
  for(int i=0;i<10;i++)
  {
    for(int j=i;j<10;j++)
    {
      if(a[i]>a[j])swap(a[i],a[j]);
    }
  }
  //输出数据
  for(int i=0;i<10;i++)
  {
    cout<<a[i]<<" ";
  }
  return 0;
}

仔细研究发现,其和冒泡排序的方法差距不大。

(0)

相关推荐

  • VC++实现选择排序算法简单示例

    本文以一个非常简单的实例说明VC++选择排序算法的实现方法,对n个记录进行n-1趟简单选择排序,在无序区中选取最小记录. 具体实现代码如下: #include<iostream> using namespace std; //简单选择排序 void SelectSort(int r[ ], int n) { int i; int j; int index; int temp; for (i=0; i<n-1; i++) //对n个记录进行n-1趟简单选择排序 { index=i; for

  • C++实现八个常用的排序算法:插入排序、冒泡排序、选择排序、希尔排序等

    本文实现了八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 .快速排序.归并排序.堆排序和LST基数排序 首先是算法实现文件Sort.h,代码如下: /* * 实现了八个常用的排序算法:插入排序.冒泡排序.选择排序.希尔排序 * 以及快速排序.归并排序.堆排序和LST基数排序 * @author gkh178 */ #include <iostream> template<class T> void swap_value(T &a, T &b) { T t

  • C++选择排序算法实例

    选择排序 选择排序是一种简单直观的排序算法,它的工作原理如下.首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾.以此类推,直到所有元素均排序完毕. 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不会被移动.选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换.在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常

  • C++冒泡排序与选择排序详解

    目录  一.冒泡排序 1.概念  2.图解 3.代码的思路 4.代码例子  二.选择排序 1.概念 2.图解 3.代码的思路 总结  一.冒泡排序 1.概念 冒泡排序这种排序方法其实关键词就在于冒泡两个字,顾名思义就是数字不断比较然后最大的突出来,也就是说把相邻的两个数字两两比较,当一个数字大于右侧相邻的数字时,交换他们的位置,当一个数字和他右侧的数字小于或等于的时候,不交换.  2.图解 关于冒泡排序我自己画了一幅图来描述他的一轮过程 这里我举了五个无序的数{7,3,6,5,4}  由此可看出

  • java数据结构排序算法之树形选择排序详解

    本文实例讲述了java数据结构排序算法之树形选择排序.分享给大家供大家参考,具体如下: 这里我们就来说说选择类排序之一的排序:树形选择排序 在简单选择排序中,每次的比较都没有用到上次比较的结果,所以比较操作的时间复杂度是O(N^2),想要降低比较的次数,则需要把比较过程中的大小关系保存下来.树形选择排序是对简单选择排序的改进. 树形选择排序:又称锦标赛排序(Tournament Sort),是一种按照锦标赛的思想进行选择排序的方法.首先对n个记录的关键字进行两两比较,然后在n/2个较小者之间再进

  • JS排序之选择排序详解

    本文为大家分享了JS选择排序的具体代码,供大家参考,具体内容如下 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在b的前面,排序后可能会交换位置 --JS选择排序-- 原理 首先从原始数组中找到最小的元素,并把该元素放在数组的最前面,然后再从剩下的元素中寻找最小的元素,放在之前最小元素的后面,知道排序完毕. 时间复杂度,空间复杂度,稳定性 平均时间复杂度O(n*n) 最好

  • java数据结构与算法之简单选择排序详解

    本文实例讲述了java数据结构与算法之简单选择排序.分享给大家供大家参考,具体如下: 在前面的文章中已经讲述了交换类的排序算法,这节中开始说说选择类的排序算法了,首先来看一下选择排序的算法思想: 选择排序的基本算法思想: 每一趟在 n-i+1 (i=1,2,3,--,n-1)个记录中选取关键字最小的记录作为有序序列中第i个记录. 简单选择排序: 设所排序序列的记录个数为n.i取1,2,-,n-1,从所有n-i+1个记录(Ri,Ri+1,-,Rn)中找出排序码最小的记录,与第i个记录交换.执行n-

  • c++选择排序详解

    选择排序,作为八大经典算法之一,虽不如插入,快速,希尔等排序高效,但其结构简单,思路清晰,适合新手理解算法, 了解排序,适合数据较少时的排序情况. 如下是选择排序的图解原理 如果说冒泡排序是顶向下,那么选择排序就是由底向上了,先解决第一个数,再解决第二个数,依次解决整个数组的排序 如下是全部代码的实现 #include <iostream> #include <math.h>//待会会用到swap交换函数 using namespace std; int main() { int

  • PHP排序算法系列之直接选择排序详解

    直接选择排序 直接选择排序(Straight Select Sorting) 的基本思想是:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,-.,第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换,-..,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列· 选择排序的主要优点与数据移动有关.如果某个元素位于正确的最终位置上,则它不

  • java排序算法之选择排序详解

    本文实例为大家分享了java排序算法之选择排序的具体代码,供大家参考,具体内容如下 选择排序 选择排序的思路是这样的:首先,找到数组中最小的元素,拎出来,将它和数组的第一个元素交换位置,第二步,在剩下的元素中继续寻找最小的元素,拎出来,和数组的第二个元素交换位置,如此循环,直到整个数组排序完成. 至于选大还是选小,这个都无所谓,你也可以每次选择最大的拎出来排,也可以每次选择最小的拎出来的排,只要你的排序的手段是这种方式,都叫选择排序. (有序区,无序区).在无序区里找一个最小的元素跟在有序区的后

  • java冒泡排序和选择排序详解

    目录 1.冒泡排序 2.选择排序法 总结 1.冒泡排序 冒泡排序(Bubble Sorting)的基本思想是:通过对待 排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒. 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下 来没有进行过交换,就说明序列有序. 图解冒泡排序算法的过程 原始数组:3, 9, -1, 10, 20 第一趟排序 (1) 3, 9, -1, 10, 20 // 如果相邻

  • JAVA十大排序算法之选择排序详解

    目录 选择排序 代码实现 动图演示 代码实现 时间复杂度 算法稳定性 总结 选择排序 1.找到数组中最大(或最小)的元素 2.将它和数组的第一个元素交换位置(如果第一个元素就是最大(小)元素那么它就和自己交换) 3.在剩下的元素中找到最大(小)的元素,将它与数组的第二个元素交换位置.如此往复,直到将整个数组排序. 代码实现 对下面数组实现排序:{87, 23, 7, 43, 78, 62, 98, 81, 18, 53, 73, 9} 动图演示 代码实现 public class Selecti

  • java 集合工具类Collections及Comparable和Comparator排序详解

    目录 一.常用功能 二.Comparator比较器 三.Comparable和Comparator两个接口的区别 四.练习 五.扩展 一.常用功能 java.utils.Collections是集合工具类,用来对集合进行操作. 部分方法如下: public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素. public static void shuffle(List<?> lis

随机推荐