zoukankan      html  css  js  c++  java
  • C++/Python冒泡排序与选择排序算法详解

    冒泡排序

    冒泡排序算法又称交换排序算法,是从观察水中气泡变化构思而成,原理是从第一个元素开始比较相邻元素的大小,若大小顺序有误,则对调后再进行下一个元素的比较,就仿佛气泡逐渐从水底逐渐冒升到水面一样。如此扫描一次之后就可以确保最后一个元素位于正确的位置。接着再逐步进行第二次扫描,直到完成所有元素的排序关系为止。

    Python代码:

    import random
    #构造数据
    data = list()
    for i in range(10):
        data.append(random.randint(0, 100))
    
    
    #打印数据
    def show(array, lens):
        for k in range(lens):
            print("%3d" % array[k], end='')
        print()
    
    
    print("原始数据:  ", end='')
    show(data, 10)
    #排序算法
    for m in range(10 - 1):
        for n in range(10 - m - 1):
            if data[n] > data[n + 1]:
                data[n], data[n + 1] = data[n + 1], data[n]
        print("第%d次冒泡:  " % (m + 1), end='')
        show(data, 10)
    
    print("排序结果:  ", end='')
    show(data, 10)
    

    C++代码:

    int * Bubble_Sort(int array[], int len)
    {
        if (array == NULL)
        {
            return NULL;
        }
        int temp = 0;
        for(int i = 0; i < len - 1; i++)
        {   
            for(int j = 0; j < len - i - 1; j++)
            {
                if(array[j] < array[j + 1])
                {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        return array;
    }
    

    选择排序

    选择排序算法算是枚举法的应用,就是反复从未排序的数列中取出最小的元素,放到对应的位置。例如一开始在所有数据中挑选出最小项放在第一个位置(假设从小到大排列),再从第二项才是挑选一个最小项放在第2个位置,以此重复,直到完成排序

    Python代码

    import random
    data = list()
    for i in range(20):
        data.append(random.randint(0, 100))
    
    
    def show_array(array, lens):
        for m in range(lens):
            print("%4d" % (array[m]), end='')
        print()
    
    
    print("原始数据:  ", end='')
    show_array(data, 20)
    for k in range(20 - 1):
        min_num = k
        for n in range(k+1, 20):
            if data[n] < data[min_num]:
                min_num = n
        if min_num != k:
            data[k], data[min_num] = data[min_num], data[k]
        print("第%2d次交换:" % (k+1), end='')
        show_array(data, 20)
    print("顺序数据:  ", end='')
    show_array(data, 20)
    

    C++代码:

    int * Select_sort(int array[], int lens)
    {
        if (array == NULL)
        {
            return NULL;
        }
        
        for(int i = 0; i < lens - 1; i++)
        {
            int min = i;
            for(int j = i + 1; j < lens; j++)
            {
                if (array[j] < array[min])
                {
                    min = j;
                }
            }
            if (min != i)
            {
                int temp = array[i];
                array[i] = array[min];
                array[min] = temp;
            }
        }
        return array;
    }
    
  • 相关阅读:
    linux recv 返回值与linux socket 错误分析
    位域
    mysql修改root密码的方法
    mysql Plugin ‘InnoDB’ init function returned error
    centos查看版本
    CentOS 7.0 使用 yum 安装 MariaDB 及 简单配置
    CentOS 7.X 中systemctl命令用法详解
    phpMyAdmin关于PHP 5.5+ is required. Currently installed version is: 5.4.16问题
    linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
    自动设置IP地址bat脚本
  • 原文地址:https://www.cnblogs.com/Hijack-you/p/11914000.html
Copyright © 2011-2022 走看看