欢迎来到飞鸟慕鱼博客,开始您的技术之旅!
当前位置: 首页知识笔记正文

冒泡排序法的排序过程,冒泡排序的一些简单例题

终极管理员 知识笔记 120阅读
冒泡排序英文名Bubble Sort是一种相对基础的 交换排序方法。这种排序算法的名字来源于它操作的过程可以类比为数列中的每一个元素都可以像小气泡一样根据自身的大小一点一点向数组的一侧移动。具体到冒泡排序的工作原理它是通过重复走访要排序的数列一次比较两个元素如果他们的顺序错误就把他们交换过来。这个过程会持续进行直到没有再需要交换的情况出现也就是说该数列已经排序完成。  
void bubble_sort(int arr[], int n) {    for (int i  0; i < n - 1; i)     {        for (int j  0; j < n - 1 - i; j)         {            if (arr[j] > arr[j  1])             {                int temp  arr[j];                arr[j]  arr[j  1];                arr[j  1]  temp;            }        }    }}

       上述代码定义了一个名为 bubble_sort 的函数它接受一个整数数组 arr 和数组的长度 n 作为参数。函数使用嵌套的两个for循环来实现冒泡排序算法。

       外层循环从 0n-2表示需要进行 n-1 轮比较和交换操作。内层循环从 0n-2-i其中 i 是外层循环的索引。这是因为每一轮比较后最大的元素都会被移动到正确的位置所以内层循环不需要再比较已经排好序的元素。

       在内层循环中通过比较相邻的元素 arr[j]arr[j1]如果前者大于后者则交换它们的位置。这样每一轮内层循环结束后最大的元素就会被移动到正确的位置。整个排序过程会重复进行直到所有的元素都被正确地排序。最后函数不返回任何值因为它直接修改了输入的数组 arr

int main() {    int arr[]  {6, 3, 2, 1, 4, 5, 9};    int n  sizeof(arr) / sizeof(arr[0]);    bubble_sort(arr, n);    printf(排序后的数组是\n);    for (int i  0; i < n; i)     {        printf(%d , arr[i]);    }    printf(\n);    return 0;}

       在此段代码中我们定义了一个arr数组并且初始化了元素。定义了一个整数n为数组的长度通过sizeof()函数先计算整个数组的字节大小除以单个元素的字节大小得到。接下来就是调用bubble_sort 函数后续通过for循环依次遍历排序后的数组依次打印。

整体展示

       上述代码我们是提前定义好的数组元素要是想要手动输入数组元素循环套用scanf()函数即可bubble_sort 函数不变详细代码如下

int main() {    int n;    printf(请输入数组元素个数 );    scanf(%d, &n);    int arr[n];    printf(请输入数组元素 );    for (int i  0; i < n; i)     {        scanf(%d, &arr[i]);    }    bubble_sort(arr, n);    printf(排序后的数组为 );    for (int i  0; i < n; i)     {        printf(%d , arr[i]);    }    printf(\n);    return 0;}

整体展示

       

       由于我使用的编译环境不支持编译未知数组大小所以我使用的是Dev C环境给大家展示结果大家在学习中可以自行研究练习。

结语冒泡排序的分享到这里就结束了希望对大家的学习会有帮助如果大家有什么问题或者不同的见解欢迎大家的留言~~~

标签:
声明:无特别说明,转载请标明本文来源!