C/C++排序篇-冒泡排序
思想
两两相邻的元素进行比较,如果前面元素大于后面元素就交换两个元素的位置,一轮下来最大的一个元素移动到了最后的位置。 我们称这个过程为冒泡。
冒泡过程
实现
以从小到大排序举例:
#include <iostream>
using namespace std;
void BubbleSorted(int *array,int length);
void Output(int *array,int length);
int main()
{
int *array=new int[10]{2,4,1,5,6,3,9,2,11,7};
BubbleSorted(array,10);
Output(array,10);
system("pause");
return 0;
}
void BubbleSorted(int *array,int length)
{
//冒泡排序思想:每一轮选出一个最大。
int *p=array;
int temp,j;
for (size_t i = 1; i <= length-1; i++)
{
for (size_t j = 1; j <= length-i; j++)
{
if (p[j-1]>p[j])
{
temp=p[j];
p[j]=p[j-1];
p[j-1]=temp;
}
}
}
}
void Output(int *array,int length)
{
for (size_t i = 0; i < length; i++)
{
cout<<array[i]<<ends;
}
}
两两相邻的元素进行比较,将较大的关键字交换到后面。即每一轮依次从序列中选出一个最大关键字放置序列末尾,直至未排序序列的长度等于1为止(最后剩余一个元素必然小于已排序的序列)。
外层循环控制选出最大关键字的次数,其终止条件->i大于 序列长度-1。
内存循环控制相邻的两两元素的比较与交换。代码中取索引j所指的当前关键字与前一个关键字进行比较。故终止条件为j大于未排序序列的最后一个位置(忽略已排序的关键字,即只对未排序序列进行比较)。
以上使用顺序表进行排序。链表的冒泡排序见文章:C/C++链表冒泡排序实现 - 麦瑞克博客 (playcreator.cn)
示例下载
作者:Miracle
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/programming-life/cpp/3042/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
来源:麦瑞克博客
链接:https://www.playcreator.cn/archives/programming-life/cpp/3042/
本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议,转载请注明!
THE END
0
打赏
海报
C/C++排序篇-冒泡排序
思想
两两相邻的元素进行比较,如果前面元素大于后面元素就交换两个元素的位置,一轮下来最大的一个元素移动到了最后的位置。 我们称这个过程为冒泡。
冒泡过……
文章目录
关闭
[…] 与冒泡排序不同的是,简单选择排序在比较过程中不进行交换,而是选择记录一轮中的最大值,最后将这一轮的最大关键字放入有序序列段中。 […]