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
  • 相关阅读:
    PowerDesigner_15连接Oracle11g,反向工程导出模型图
    angular学习
    GoEasy消息推送
    Spring 工作原理
    JAVA解析HTML,获取待定元素属性
    设计模式之工厂方法模式
    设计模式之单例模式
    通过Java代码获取系统信息
    centos7下NAT模式下设置静态ip
    关于在Spring项目中使用thymeleaf报Exception parsing document错误
  • 原文地址:https://www.cnblogs.com/wwzyy/p/4386049.html
Copyright © 2011-2022 走看看