写在前面的话:以排升序为例
目录
冒泡排序
通过重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序错误就把他们交换过来。走访元素的工作是重复地进行,直到没有相邻元素需要交换,也就是说该元素列已经排序完成。
单趟
单趟会通过两两比较的方式将数组中最大的元素排到末尾
for(int j=0;j<numsSize-1;j++)
{
if(nums[j]>nums[j+1])
{
Swap(&nums[j],&nums[j+1]);
}
}
循环
初始:第一趟,是将数组下标从0到numsSize-1的范围中的最大元素放在了numsSize-1的位置上
循环:缩小范围,将数组下标从0到numsSize-2的范围中的最大元素放在numsSize-2的位置上
终止:当范围缩小到一个元素
void Bubble(int* nums,int numsSize)
{
for(int i=0;i<numsSize-1;i++)
{
for(int j=0;j<numsSize-1-i;j++)
{
if(nums[j]>nums[j+1])
{
Swap(&nums[j],&nums[j+1]);
}
}
}
}
优化
优化点在于,当一个升序数组通过冒泡进行排序,时间复杂的是O(N*N),可以在此种情况优化为O(N)
void Bubble(int* nums,int numsSize

最低0.47元/天 解锁文章
651

被折叠的 条评论
为什么被折叠?



