排序是日常生活中最常见的操作,也是算法中最有趣的问题之一,排序问题可以描述为:

  输入:n个数<a1,a2,…,an>

  输出:输入序列的一个排列(即重新排序)<a1’,a2’,….,an’>,使得a1’<=a2’<=…<=an’。

  待排序的数也称为关键字(key)。

       本篇文章将列举出常见的排序算法,分别从思想、复杂度、稳定性等方面,总结其优劣和适用情形,并给出源码示例。

  要想解决排序问题,最直观也是最简单的做法就是两两比较,每次找出当前最大(最小)的,直至整个排序完成。这种算法有一个比较形象的的名字叫“冒泡法”。

一、冒泡排序BubbleSort):

  思想:

  冒泡排序的是第一次通过两两比较,找出a1-an中最大的数,并将其放在an的位置,然后第二次执行同样的操作,找出a1-an-1中最大的数,放在an-1的位置,如此下去,直至待排序集合只剩一个数。

  代码:

  输入:n个元素的数组A[0…n-1]

  输出:按非降序排列的数组A[0…n-1](下同)

 1 void BubbleSort(int A[],int length)
 2 
 3 {
 4 
 5      for(int i=1; i<length; i++)
 6 
 7      {
 8 
 9              for(int j=1; j<=length-i; j++)
10 
11              {
12 
13                      if(A[j-1]>A[j])
14 
15                      {
16 
17                           swap(A[j-1],A[j]);                    
18 
19                      }       
20 
21              }       
22 
23      }    
24 
25 }
View Code

相关文章:

  • 2021-07-22
  • 2021-10-22
  • 2022-12-23
  • 2022-03-06
  • 2022-12-23
  • 2021-12-05
  • 2020-03-22
  • 2021-11-07
猜你喜欢
  • 2022-12-23
  • 2021-11-14
  • 2021-09-08
  • 2021-11-30
  • 2021-10-22
  • 2022-03-05
  • 2022-12-23
相关资源
相似解决方案