冒泡排序

冒泡排序,顧名思義就像水中的氣泡同樣,氣泡越大,上浮的越快。ios

以整數數組爲例,數值越大的元素咱們就認爲它越應該出如今數組的右邊,這樣就構成了一個遞增數組。c++

對於含有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)spa

 

 

附上go語言版本.net

 

  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), "\n")  
  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. }  
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息