zoukankan      html  css  js  c++  java
  • 冒泡排序

    冒泡排序,顾名思义就像水中的气泡一样,气泡越大,上浮的越快。

    以整数数组为例,数值越大的元素我们就认为它越应该出现在数组的右边,这样就构成了一个递增数组。

    对于含有n个元素的数组values,我们每次从左向右扫描出一个最大的,可以得知,经过n-1次扫描我们即可得到一个有序数组。

    c++版本:

    1. #include <iostream>  
    2. #include <stdlib.h>  
    3. #include <time.h>  
    4.   
    5. void buddle_sort(int a[], int n)  
    6. {  
    7.   for (int i = 0; i < n - 1; ++i)  
    8.     for (int j = 0; j < n - i - 1; ++j)  
    9.       if (a[j] > a[j + 1])  
    10.       {  
    11.         int tmp = a[j];  
    12.         a[j] = a[j + 1];  
    13.         a[j + 1] = tmp;  
    14.       }  
    15. }  
    16.   
    17. void print(int a[], int n)  
    18. {  
    19.   for (int i = 0; i < n; ++i)  
    20.     std::cout << a[i] << " ";  
    21.   std::cout << std::endl;  
    22. }  
    23.   
    24. int main()  
    25. {  
    26.   ::srand(::time(NULL));  
    27.   const int num = 40;  
    28.   int a[num] = {0};  
    29.   for (int i = 0; i < num; ++i)  
    30.     a[i] = ::rand() % 10;  
    31.   
    32.   buddle_sort(a, num);  
    33.   print(a, num);  
    34.   return 0;  
    35. }  
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    
    void buddle_sort(int a[], int n)
    {
      for (int i = 0; i < n - 1; ++i)
        for (int j = 0; j < n - i - 1; ++j)
          if (a[j] > a[j + 1])
          {
            int tmp = a[j];
            a[j] = a[j + 1];
            a[j + 1] = tmp;
          }
    }
    
    void print(int a[], int n)
    {
      for (int i = 0; i < n; ++i)
        std::cout << a[i] << " ";
      std::cout << std::endl;
    }
    
    int main()
    {
      ::srand(::time(NULL));
      const int num = 40;
      int a[num] = {0};
      for (int i = 0; i < num; ++i)
        a[i] = ::rand() % 10;
    
      buddle_sort(a, num);
      print(a, num);
      return 0;
    }

    该排序算法是稳定的,时间复杂度是O(n2)

    附上go语言版本

    1. package main  
    2.   
    3. import "fmt"  
    4. import "math/rand"  
    5. import "time"  
    6.   
    7. func buddle_sort(values []int) {  
    8.   for i := 0; i < len(values)-1; i++ {  
    9.     for j := 0; j < len(values)-i-1; j++ {  
    10.       if values[j] > values[j+1] {  
    11.         values[j], values[j+1] = values[j+1], values[j]  
    12.       }  
    13.     }  
    14.   }  
    15. }  
    16.   
    17. func main() {  
    18.   values := make([]int, 10)  
    19.   fmt.Print(len(values), " ", cap(values), " ")  
    20.   rand.Seed(int64(time.Now().Nanosecond()))  
    21.   for i := 0; i < len(values); i++ {  
    22.     values[i] = rand.Int() % 10  
    23.   }  
    24.   buddle_sort(values)  
    25.   for _, v := range values {  
    26.     fmt.Print(v, " ")  
    27.   }  
    28.   fmt.Println()  
    29. }  
  • 相关阅读:
    初窥Opencv
    24课时VC之思考>编辑控件
    24课时VC之思考>列表框与组合框
    递归归并排序 思想 JAVA实现
    插入排序 思想 JAVA实现
    AJAX发送json,SpringMVC 接收JSON,@RequestBody
    SpringBoot设置默认启动页的2种方式
    选择排序 思想 JAVA实现
    快速排序(一) 思想 JAVA实现
    spring security之logoutHandler中的CookieClearingLogoutHandler
  • 原文地址:https://www.cnblogs.com/xiao-wei-wei/p/3391654.html
Copyright © 2011-2022 走看看