zoukankan      html  css  js  c++  java
  • 选择排序

    选择排序算法(不稳定,时间复杂度O(n^2)),性能上要略优于冒泡

    升序

    基本思想:在一堆数中,先找到最小的数,放到第0位,就不用管了;在剩下的数中再找到第二小的数放到第1位,就不用管了;在剩下的数中再找到第三小的数放到第2位,依次类推,总数依次减一,最后排完为止。

    方法:

    1. 从第0位开始与后面的数进行比较,如果有比第0位小的数,就让那个数取代第0位继续与后面的数进行比较,如果有比那个数小的,就让其取代位置,以保证与后面数比较的数永远是最小的。第1遍下来,就找出了最小的数,把那个数放到第0位。
    2. 从第1位开始同理进行比较,第2遍下来,就找出了第2小的数放到第1位。
    3. 依次类推
     1 #include <iostream>
     2 
     3 using namespace std;
     4 
     5 #define max 10
     6 
     7 void sort(int *array)
     8 
     9 {
    10 
    11 for(int i=0;i<max;i++)//从0开始,到9结束,共10次循环
    12 
    13 {
    14 
    15 int imin = i;
    16 
    17 for (int j = i+1;j<max;j++)//每次小循环后都找到最小的数
    18 
    19 {
    20 
    21          if(array[j] < array[imin])//如果后面的数比imin小
    22 
    23          {
    24 
    25          imin = j;//就让后面的数取代imin的位置,继续和后面的数比较
    26 
    27          }
    28 
    29 }
    30 
    31 //经过一次小循环后,就找到了最小的数
    32 
    33 if (i != imin)//如果最小数的下标不是它该在的位置,就把它放在该在的位置
    34 
    35 {
    36 
    37 swap(array[i],array[imin]);
    38 
    39 }
    40 
    41 }
    42 
    43 }
    44 
    45 void main()
    46 
    47 {
    48 
    49          int array[max]={5,2,1,7,8,9,4,1,3,10};
    50 
    51          sort(array);
    52 
    53          for(int i=0;i<10;i++)
    54 
    55                    cout<<array[i]<<" ";
    56 
    57 }
    View Code
  • 相关阅读:
    物流与仓库
    测试使用
    禅修的升级
    《引爆点 马尔科姆 格拉德威尔》读书笔记总结----《创业必读书第20本》--创业第三关做好业务:3,如何做好营销和增长第4本
    shell
    Vue中常用的方法记录
    前端工程化3-tapable
    Browser上传文件到华为云/七牛云 详细步骤
    immutable
    shell利用叮叮发送消息
  • 原文地址:https://www.cnblogs.com/wwzyy/p/4386049.html
Copyright © 2011-2022 走看看