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 }
  • 相关阅读:
    python网站开发准备ubuntu14.04安装mysql实现windows管理
    python 数据结构之二叉树
    python 数据结构之二分查找的递归和普通实现
    python 数据结构之归并排序
    python数据结构之希尔排序
    ctf study of jarvisoj reverse
    python数据结构之quick_sort
    堆与栈
    汇编整理
    js运算符
  • 原文地址:https://www.cnblogs.com/dormant/p/5317140.html
Copyright © 2011-2022 走看看