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
  • 相关阅读:
    yii required 字段去除*号
    shtml用include加载文件,apache开启SSI,及shtml压缩
    门户站点用html或shtml文件格式的原因
    Apache配置shtml
    数据库迁移工具
    SQL SERVER2005 级联删除
    MySql级联删除和更新
    js只允许输入数字和小数点
    表格中的数据为空时,td的边框不显示
    MYSQL: Cannot delete or update a parent row: a foreign key constraint fails
  • 原文地址:https://www.cnblogs.com/wwzyy/p/4386049.html
Copyright © 2011-2022 走看看