程序开发 > C# > 正文

冒泡排序算法(顺序、倒序)

亮术网 2020-07-06 本网原创

在编写程序过程中,常常需要对数组,列表(List、IList 等)进行排序,排序的方法有很多种,冒泡排序就是其中一种。之所以叫冒泡排序,是因为排序的过程很像冒泡,看了冒泡排序算法的基本思想,更容易理解。

 

一、冒泡排序算法的基本思想

第一次循环,从数组(或列表)中选出一个最小的排到第一位;第二次循环,又从剩余的数组元素中选出一个最小的排到第二位;依次类推,直接排完所有数组元素,整个过程是不是很像冒泡。

 

二、C#冒泡排序算法(顺序)

/// <summary>
  /// 冒泡排序
  /// </summary>
  /// <param name="arr">待排序数组</param>

  public void BubbleSort(int[] arr)
  {
    int temp;
    for (int i = 0; i < arr.Length - 1; i++)
    {
      for (int j = 0; j < arr.Length - 1 - i; j++)
      {
        if (arr[j] > arr[j + 1])
        {
          temp = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = temp;
        }
      }
    }
  }

调用方法:

int[] a = new int[] { 36, 7, 120, 89, 3, 56, 23, 45 };
  BubbleSort(a);

foreach (int n in a)
  label.Text += n.ToString() + " ";

输出结果:3 7 23 36 45 56 89 120(测试通过)

 

 

三、C#冒泡排序算法(倒序)

倒序跟顺序基本相同,只是把 if (arr[j] > arr[j + 1]) 中的 > 改为 < 即可,代码如下:

/// <summary>
  /// 冒泡排序(倒序)
  /// </summary>
  /// <param name="arr">待排序数组</param>

  public void BubbleSort(int[] arr)
  {
    int temp;
    for (int i = 0; i < arr.Length - 1; i++)
    {
      for (int j = 0; j < arr.Length - 1 - i; j++)
      {
        if (arr[j] < arr[j + 1])
        {
          temp = arr[j];
          arr[j] = arr[j + 1];
          arr[j + 1] = temp;
        }
      }
    }
  }

调用方法:

int[] a = new int[] { 36, 7, 120, 89, 3, 56, 23, 45 };
  BubbleSort(a);

foreach (int n in a)
  label.Text += n.ToString() + " ";

输出结果:120 89 56 45 36 23 7 3(测试通过)

 

 

四、C语言冒泡排序算法(顺序)

#include <stdio.h>
  #include <stdlib.h>
  #include <string.h>

void bubblesort(int a[], int n)
  {
    int i,j,temp;
    for (i = 0; i < n - 1; i++)
    {
      for (j = 0; j < n - 1 - i; j++)
      {
        if (a[j] > a[j + 1])
        {
          temp = a[j];
          a[j] = a[j+1];
          a[j+1] = temp;
        }
      }
    }

}

void main ()
  {
    int a[8] = {36, 7, 120, 89, 3, 56, 23, 45};
    bubblesort(a, 8);

  int i;
    for (i = 0; i < 8; i++)
      printf("%d,",a[i]);
    printf("\n");
  }

输出结果:3,7,23,36,45,56,89,120

 

 

五、C语言冒泡排序算法(倒序)

#include <stdio.h>
  #include <stdlib.h>
  #include <string.h>

void bubblesort(int a[], int n)
  {
    int i,j,temp;
    for (i = 0; i < n - 1; i++)
    {
      for (j = 0; j < n - 1 - i; j++)
      {
        if (a[j] < a[j + 1])
        {
          temp = a[j];
          a[j] = a[j+1];
          a[j+1] = temp;
        }
      }
    }

}

void main ()
  {
    int a[8] = {36, 7, 120, 89, 3, 56, 23, 45};
    bubblesort(a, 8);

  int i;
    for (i = 0; i < 8; i++)
      printf("%d,",a[i]);
    printf("\n");
  }

输出结果:120,89,56,45,36,23,7,3

本文浓缩标签:排序算法