【冒泡排序】

冒泡排序的核心思想就是:两两相邻的元素进行比较
如果不满足顺序就交换,满足顺序就找下一对

//⽅法1
void bubble_sort(int arr[], int sz)//参数接收数组元素个数
{
    int i = 0;
    for(i=0; i<sz-1; i++)
    {
        int j = 0;
        for(j=0; j<sz-i-1; j++)
        {
            if(arr[j] > arr[j+1])
            {
                int tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    }
}
int main()
{
    int arr[] = {3,1,7,5,8,9,0,2,4,6};
    int sz = sizeof(arr)/sizeof(arr[0]);
    bubble_sort(arr, sz);
    int i = 0;
    for(i=0; i<sz; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

结果

下面是优化的(在排序正常的情况下,直接跳过,防止多余重复排序操作)

//⽅法2 - 优化
void bubble_sort(int arr[], int sz)//参数接收数组元素个数
{
    int i = 0;
    for(i=0; i<sz-1; i++)
    {
    int flag = 1;//假设这⼀趟已经有序了
    int j = 0;
        for(j=0; j<sz-i-1; j++)
        {
            if(arr[j] > arr[j+1])
            {
                flag = 0;//发⽣交换就说明,⽆序
                int tmp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tmp;
            }
        }
    if(flag == 1)//这⼀趟没交换就说明已经有序,后续⽆序排序了
            break;
        }
    }
int main()
{
    int arr[] = {3,1,7,5,8,9,0,2,4,6};
    int sz = sizeof(arr)/sizeof(arr[0]);
    bubble_sort(arr, sz);
    int i = 0;
    for(i=0; i<sz; i++)
    {
        printf("%d ", arr[i]);
    }
    return 0;
}

相关推荐

  1. 排序算法——冒泡排序

    2024-06-10 11:22:02       41 阅读
  2. 排序算法:冒泡排序

    2024-06-10 11:22:02       25 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-10 11:22:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-10 11:22:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-10 11:22:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-10 11:22:02       18 阅读

热门阅读

  1. python-win10跑通chattts笔记(亲测可跑)0.8.010

    2024-06-10 11:22:02       9 阅读
  2. 列举常见的SQL语句

    2024-06-10 11:22:02       10 阅读
  3. 谈谈 Tomcat 连接器

    2024-06-10 11:22:02       7 阅读
  4. 2024年城市客运安全员考试题库及答案

    2024-06-10 11:22:02       9 阅读
  5. Redis 的一些关键知识点及示例

    2024-06-10 11:22:02       9 阅读