C++实现冒泡排序、选择排序和插入排序算法

需积分: 12 0 下载量 122 浏览量 更新于2024-09-08 收藏 3KB TXT 举报
"本文主要介绍了冒泡排序(Bubble Sort)算法的C++实现,并提供了冒泡排序、选择排序和插入排序三种算法的代码示例,用于对比不同排序算法的效率。" 冒泡排序是一种简单的排序算法,其基本思想是通过重复遍历待排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经过交换慢慢“浮”到数列的顶端,就像水中的气泡最终会上升到水面一样。 在提供的C++代码中,`bubblesort`函数实现了冒泡排序算法。它首先初始化一个标志变量`flag`为1,表示是否还有需要交换的元素。然后用两层循环遍历数列,外层循环控制遍历次数,内层循环则是每次比较相邻的两个元素并进行交换。如果在一轮遍历中没有发生过交换,说明数列已经有序,因此将`flag`设为0,跳出循环。最后,计算并输出冒泡排序所花费的时间。 选择排序(Selection Sort)算法则是在每一轮中找到最小(或最大)的元素,然后将其与当前位置的元素交换。`selectionsort`函数中,首先记录当前元素作为最小值,然后遍历剩余元素,如果发现更小的值,则更新最小值的位置。在一轮结束后,将找到的最小值与当前位置的元素交换。同样,选择排序的运行时间也会被输出。 插入排序(Insertion Sort)的基本思想是将每个元素插入到已排序的部分,保持已排序部分的有序性。`insertionsort`函数中,从第二个元素开始,遍历每个元素,将其与前面已排序的元素依次比较,找到合适的位置插入,保持前面的元素顺序。同样,插入排序的执行时间也会被计算和显示。 这三种排序算法各有特点,冒泡排序在最坏情况下(逆序数组)的时间复杂度为O(n^2),而最好的情况(已排序数组)下只需要O(n)。选择排序无论输入数据如何,时间复杂度始终为O(n^2)。插入排序在最好情况(已排序数组)下有O(n)的时间复杂度,但在最坏情况(逆序数组)下也是O(n^2)。通过比较这三种算法的运行时间,可以直观地理解它们在实际应用中的性能差异。