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

    选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。

    C++

     1 #include<iostream>
     2 using namespace std;
     3 
     4 template<class T>
     5 int length(T& arr)
     6 {
     7     return sizeof(arr) / sizeof(arr[0]);
     8 }
     9 
    10 void print(int * const src ,const int src_lenght)
    11 {
    12     for(int i = 0 ;i<src_lenght;i++)
    13         cout<<src[i]<<"  ";
    14 
    15     cout<<endl;
    16 }
    17 
    18 int * Selection_sort(int * const src,const int src_lenght)
    19 {
    20     int min_index;
    21     int tmp;
    22     for(int i = 0;i<src_lenght-1;i++){
    23         min_index = i;
    24         for(int j = i;j<src_lenght-1;j++)
    25             if(src[min_index]>src[j])
    26                 min_index = j;
    27             
    28 
    29         if(i!=min_index)
    30         {
    31             tmp = src[i];
    32             src[i] = src[min_index];
    33             src[min_index] = tmp;
    34             print(src,src_lenght);
    35         }
    36 
    37     }
    38     return src;
    39 }
    40 
    41 int main()
    42 {
    43     int a[6] = {6,-9,10,10,-3,11};
    44     Selection_sort(a,length(a));
    45     print(a,length(a));
    46 
    47     return 0;
    48 }

    python

     1 """选择排序"""
     2 def selectionSort(src):
     3 
     4     for i in range(len(src) - 1):
     5         min_index = i
     6         for j in range(i,len(src) - 1 ):
     7             if (src[j] > src[j + 1]):
     8                 min_index = j + 1
     9             if(min_index != i):
    10                 src[i], src[min_index] = src[min_index], src[i]
    11     return src
    12 
    13 
    14 a = [6,8,1,0,3,4,5]
    15 print(selectionSort(a))
  • 相关阅读:
    perl中shift 和unshift 操作
    Perl 关于 use strict 的用法
    Windows7鼠标右键里没有新建文本文件的选项,解决办法
    大唐笔试题
    常用的设计模式
    优化C++程序编译效率的一些方法
    TCP连接,传输数据时的粘包问题讨论
    单链表是否有环及环入口点
    构造函数和析构函数能否声明为虚函数?
    azkaban 执行hive语句
  • 原文地址:https://www.cnblogs.com/xswl/p/10082525.html
Copyright © 2011-2022 走看看