排序是软件开发中最常见的算法问题了,给出一组数据,按照要求对其进行排序,或是从小到大,或是从大到小。今天我们就用C++来实现冒泡排序的过程。
实现原理
假设以从大到小的排序方式为例,假设共有N个数(A1......An):
1)依次比较数组中第一个值和后面的所有值,如果第一个数字小于后面的数字,交换两个数字,这样经过N-1次比较后 得到一个最的值在数组的最前面
2)接下来只需要将后面N-1个数排列即可,用第二个数和后面所有数比较,如果第二个数小于后面的数字,就进行交换,得到第二大的数字在第二位
3)重复上面的操作,直到只剩下一个最小的数完成排序
4)总共需要找N-1次最大的值即可完成排序
排序过程
假设有 (1,3,5), 3个数需要从大到小排序,那么排序的过程就是,
首先1和3进行比较,1<3,需要交换 此时变成(3,1,5),
然后3和5进行比较,3<5,需要交换 此时变成(5,1,3),此时选出了最大值5
然后3和1进行比较,1<3,需要交换 此时变成(5,3