冒泡排序 和 qsort排序

简介: 冒泡排序 和 qsort排序

冒泡排序


首先,我先介绍我的冒泡排序代码,分为三个部分:

1.冒泡排序

2.输出

3.主函数

冒泡排序部分

void Bubble_sort(int* a, int sz)
{
  int i = 0;
  for (i = 0; i < (sz - 1); i++)
  {
    int j = 0;
    for (j = 0; j < ((sz - 1) - i); j++)
    {
      if (a[j] > a[j + 1])
      {
        int temp = a[j];
        a[j] = a[j + 1];
        a[j + 1] = temp;
      }
    }
  }
}

输出函数部分

void Print(int* a, int sz)
{
  int i = 0;
  for (i = 0; i < sz; i++)
  {
    printf("%d ", a[i]);
  }
  printf("\n");
}

主函数部分

int main()
{
  int a[10] = { 8,9,6,1,4,66,7,3,5,2 };
  int sz = sizeof(a) / sizeof(a[0]);
  //冒泡排序
  Bubble_sort(a, sz);
  //打印数组
  Print(a, sz);
  return 0;
}

总代码

void Bubble_sort(int* a, int sz)
{
  int i = 0;
  for (i = 0; i < (sz - 1); i++)
  {
    int j = 0;
    for (j = 0; j < ((sz - 1) - i); j++)
    {
      if (a[j] > a[j + 1])
      {
        int temp = a[j];
        a[j] = a[j + 1];
        a[j + 1] = temp;
      }
    }
  }
}
 
void Print(int* a, int sz)
{
  int i = 0;
  for (i = 0; i < sz; i++)
  {
    printf("%d ", a[i]);
  }
  printf("\n");
}
 
int main()
{
  int a[10] = { 8,9,6,1,4,66,7,3,5,2 };
  int sz = sizeof(a) / sizeof(a[0]);
  //冒泡排序
  Bubble_sort(a, sz);
  //打印数组
  Print(a, sz);
  return 0;
}

控制台输出显示

总代码解释


冒泡排序优化


优化部分:

1.在冒泡排序中,定义了一个flag来控制数组的有序(升序 or 降序);

2.输出部分放在主函数中.

冒泡排序

void Bubble_sort(int* a, int sz)
{
  int i = 0, flag = 1;
  for (i = 0; i < (sz - 1); i++)
  {
    int j = 0;
    for (j = 0; j < ((sz - 1) - i); j++)
    {
      if (a[j] > a[j + 1])
      {
        flag = 0;
        int temp = a[j];
        a[j] = a[j + 1];
        a[j + 1] = temp;
      }
    }
    if (flag == 1)
    {
      break;
    }
  }
}

主函数

int main()
{
  int a[10] = { 8,9,6,1,4,66,7,3,5,2 };
  int sz = sizeof(a) / sizeof(a[0]);
  //冒泡排序
  Bubble_sort(a, sz);
  //输出
  int i = 0;
  for (i = 0; i < sz; i++)
  {
    printf("%d ", a[i]);
  }
  printf("\n");
  return 0;
}

总代码

代码优化解释


qsort 排序


qsort 的介绍

使用qsort排序整型数据

int int_cmp(const void* p1,const void* p2)
{
  return (*(int*)p1 - *(int*)p2);
}
 
int main()
{
  int a[10] = { 8,9,6,1,4,66,7,3,5,2 };
  int sz = sizeof(a) / sizeof(a[0]);
  qsort(a, sz, sizeof(int), int_cmp);
  int i = 0;
  for (i = 0; i < sz; i++)
  {
    printf("%d ", a[i]);
  }
  printf("\n");
  return 0;
}

代码解释

在qsort的第四个参数 int_cmp

(*(int*)p1)  表示的是把p1强制类型转换成int,再解引用

控制台显示输出如👆上面冒泡结果的相同


使用qsort排序结构数据

在这篇文章中 (链接)-->一.学生成绩管理系统(简单) -->按学生的平均分进行从高到低排序

能找到并详细讲解

目录
相关文章
|
5月前
|
搜索推荐 算法 C语言
冒泡排序:从小到大轻松搞定数组排序(c语言代码)
冒泡排序:从小到大轻松搞定数组排序(c语言代码)
195 0
|
5月前
|
搜索推荐 容器
数组中的冒泡排序与选择排序
数组中的冒泡排序与选择排序
|
5月前
|
JavaScript 前端开发
sort函数排序
sort函数排序
46 0
sort函数排序
|
5月前
|
算法 搜索推荐
排序——选择排序
排序——选择排序
53 0
|
5月前
|
算法 搜索推荐 C语言
快速排序和qsort函数详解详解qsort函数
快速排序和qsort函数详解详解qsort函数
73 0
|
5月前
|
存储 算法 搜索推荐
排序方法8大总结
排序方法8大总结
|
搜索推荐 C语言
冒泡排序与qsort函数详解
提及到排序,冒泡排序算是一个很基础的排序了。那么冒泡排序到底是什么呢?冒泡排序在什么情况下使用呢?qsort函数又是什么呢?接下来我给大家通过举例来详细解释一下。
53 0
LetCode第912题 排序数组之冒泡排序
依次比较相邻的两du个数,将小数放在前面zhi,大数放在后面。即首先比较第dao1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再大于第2个数),将小数放前,大数放后,一直比较到最小数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最小数。如此下去,直至最终完成排序。
46 0
LetCode第912题 排序数组之冒泡排序
qsort函数——快速排序
本篇讲qsort函数的使用和如何模拟实现qsort函数
42 0
|
算法 搜索推荐
排序——冒泡排序
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。