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

    现在简单来讲一下选择排序的思想:

    我们接触选择排序的时间很长了,也是我们编程时需要最先接触的程序。他的思想确实较简单。

    算法思想:

      选择排序需要针对数组从头到尾进行扫描,其实就是记录下扫描一遍后整个数组的最小元素和最小元素的位置,然后和第一个元素进行交换,这样经过一遍排序我们就可以确定一个元素的最终位置;然后从第二个数据开始再次循环扫描交换,直到最后;在这里交换时有一个优化的过程,如果最小元素的位置和之前记录的位置一样,则可以通过比较,避免无谓的交换,节省时间和空间

    选择排序是一个不稳定的排序,最好最坏和平均下来的时间复杂度都是O(n2);

    算法实现:

     1 #include<iostream>
     2 using namespace std;
     3 
     4 void swap(int &a, int &b){
     5     int temp = a;
     6     a = b;
     7     b = temp;
     8 } 
     9 
    10 void selectSort(int *data, int length){
    11     
    12     if(data == NULL || length < 0){
    13         return;
    14     }
    15     
    16     for(int i = 0; i < length - 1; i++){
    17         int value = data[i];
    18         int index = i;                              
    19         
    20         for(int j = i + 1; j < length; j++){
    21             if(data[j] < value){
    22                 value = data[j];                        //记录每一次的最小值
    23                 index = j;                              //记录每一次的索最小值索引
    24             }
    25         }
    26         
    27         if(index == i){                                 //简单优化
    28             continue;
    29         }
    30         
    31         swap(data[i], data[index]);                      //交换阶段
    32     }
    33 }
    34 
    35 int main(){                                              //测试代码
    36     int str[] = {34, 23, 4, 78, 1, 0, 45, 9, 33, 6, 234};
    37     int len = sizeof(str) / sizeof(int);
    38     selectSort(str, len);
    39     
    40     for(int k = 0; k < len; k++){
    41         cout<< str[k]<< ' '; 
    42     } 
    43     
    44     return 0;
    45 }
  • 相关阅读:
    013.ES6 -对象字面量增强型写法
    012. ES6
    011. ES6 语法
    10. 9. Vue 计算属性的setter和getter 以及 计算属性的缓存讲解
    4. Spring MVC 数据响应方式
    3. SpringMVC 组件解析
    9. Vue 计算属性
    【洛谷 2984】给巧克力
    【洛谷 1821】捉迷藏 Hide and Seek
    【洛谷 1821】银牛派对Silver Cow Party
  • 原文地址:https://www.cnblogs.com/dormant/p/5317140.html
Copyright © 2011-2022 走看看