/* 此程序用于实现冒泡排序
* 作者:zhy
* 时间:2021/7/20
*/
#include <stdio.h>
#include <stdlib.h>
// 使用双重循环实现
// array是待排序数组的首地址,len参数是需要排序的元素个数
void bubblesort1(int *array,int len);
// 使用递归实现(单层递归)
// array是待排序数组的首地址,len参数是需要排序的元素个数
void bubblesort2(int *array,int len);
void showarray(int *array,int len);
int main(int argc,char *argv[])
{
int array[] = {44,3,38,5,47,15,36,26,27,2,46,4,19,50,48};
showarray(array,sizeof(array)/sizeof(int));
bubblesort1(array,sizeof(array)/sizeof(int));
showarray(array,sizeof(array)/sizeof(int));
bubblesort2(array,sizeof(array)/sizeof(int));
showarray(array,sizeof(array)/sizeof(int));
return 0;
}
void bubblesort1(int *array,int len)
{
if (len < 2) return;
int ii; // 排序趟数
int jj; // 每趟排序的元素位置下标
for (ii = len -1;ii > 0;ii--)
{
for (jj = 0;jj < ii;jj++)
{
if (array[jj] > array[jj + 1])
{
array[jj] += array[jj + 1];
array[jj + 1] = array[jj] - array[jj + 1];
array[jj] -= array[jj +1];
}
}
}
}
void bubblesort2(int *array,int len)
{
if (len<2) return; // 数组小于2个元素不需要排序。
int ii; // 每趟排序的元素位置下标
for (ii = 0;ii < len - 1;ii++)
{
if (array[ii] > array[ii + 1])
{
array[ii] += array[ii + 1];
array[ii + 1] = array[ii] - array[ii + 1];
array[ii] -= array[ii +1];
}
}
bubblesort2(array,--len);
}
void showarray(int *array,int len)
{
for (int i = 0;i< len;i++)
{
printf ("%d ",array[i]);
}
printf("\n");
}
冒泡排序实现
最新推荐文章于 2021-12-16 22:52:37 发布
本文展示了两种冒泡排序的实现方式,一种是传统的双重循环实现,另一种是递归实现。通过示例代码详细解释了冒泡排序的过程,并在主函数中进行了排序前后的数组展示,帮助理解冒泡排序的工作原理。
485

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



