zoukankan      html  css  js  c++  java
  • 八大排序算法总结(1)

    冒泡排序:

    第一轮:从下标0到n-1(n 是数组长度),如果前一个元素比后一个元素大,那么,相邻的两两交换,最后数组中最大的元素放在最后一个位置上。

    第二轮:从下标0到n-2,重复上过程,这样第二大的元素,就放在了倒数第二个位置上。

    。。。。。。。

    冒泡排序的基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素“浮”到顶端,最终达到完全有序

      

    //冒泡排序
        public static void buddleSort(int[] a ){
            for(int i =0;i<a.length-1;i++)
                for(int j=0;j<a.length-1-i;j++)
                    if(a[j]>a[j+1])
                        swap(a, j+1, j);                                
        }

     

     1 def bubble_sort(x):
     2     '''
     3     bubble sort
     4         每次将最大的元素放在最后一位
     5         循环N次
     6 
     7 
     8 
     9 
    10         [6, 5, 1, 4]
    11         [5, 6, 1, 4]
    12         [5, 1, 6, 4]
    13         [5, 1, 4, 6]
    14 
    15         [1, 5, 4, 6]
    16         [1, 4, 5, 6]
    17 
    18         [1, 4, 5, 6]
    19     Arguments:
    20         x {[type]} -- [description]
    21 
    22     Returns:
    23         [type] -- [description]
    24     '''
    25     for i in range(len(x)):
    26         for j in range(len(x) - 1 - i):
    27         #for j in range(len(x)-1-i-1,-1,-1):28             if(x[j] > x[j + 1]):
    29                 swap(x, j, j + 1)
    30     return x

     

    选择排序:

    第一轮:从下标0到n-1,找出最小元素的下标min, 交换min 与 0,这样第一个位置放的是最小的元素。

    第二轮:从下标1到n-1,找出最小元素的下标min,交换min与1,这样第二个位置放的是第二小的元素。

    。。。。。。。

    //选择排序
        public static void choseSort(int[] a ) {
            int min;
            for(int i=0;i<=a.length-1;i++){
                min = i;
                for(int j=i;j<=a.length-1;j++)
                    if(a[j]<a[min])
                        min=j;
                
                if(min!=i) swap(a, min, i);
            }
        }

     

     1 def chouse_sort(x):
     2     '''[summary]
     3 
     4     选择一个最小的元素放在前面
     5 
     6 
     7     Arguments:
     8             x {[type]} -- [description]
     9     '''
    10 
    11     for i in range(len(x)):
    12         minx = i
    13         for j in range(i, len(x)):
    14             if(x[j] < x[minx]):
    15                 minx = j
    16         swap(x, i, minx)
    17     return x

     

     

    插入排序:

    
    

     直接插入排序基本思想是每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。

    
    

      

    1 public static void insertSort(int[] a) {
    2         for (int i = 0; i < a.length; i++) 
    3             for (int j = i; j > 0; j--) 
    4                 if(a[j]<a[j-1])
    5                     swap(a, j, j-1);                    
    6     }
     1 def insert_sort(x):
     2     '''[summary]
     3     通过逐次交换,将当前的数字交换到前面,从而实现插牌
     4 
     5 
     6     Arguments:
     7             x {[type]} -- [description]
     8     '''
     9 
    10     for i in range(len(x)):  # 摸牌
    11         for j in range(0, i)[::-1]:  # 将0到i-1的所有元素,逐次与i比较
    12             print(x, i, j)
    13             if(x[j + 1] < x[j]):
    14                 swap(x, j, j + 1)
    15     return x

    辅助函数:

    public static void swap(int[] a ,int i ,int j) {
            int temp=a[i];
            a[i] = a[j];
            a[j] = temp;
            
        }
  • 相关阅读:
    vue 进行ajax请求,使用axios
    webpack 小记
    js闭包
    git小记
    sublime text3 插件安装
    mysql安装
    四十九、django单表操作,多表操作,一对多,多对多,分组查询,聚合查询,F、Q查询,自定义char字段,事务,only与defer ,choices字段
    四十八、模板层,标签,过滤器,继承和导入
    四十七、django路由匹配,分组,反向解析,路由分发,视图层
    四十六、django配置及增删改查
  • 原文地址:https://www.cnblogs.com/zle1992/p/8007138.html
Copyright © 2011-2022 走看看