C语言冒泡排序法的实现(升序排序法)

任务代码:

数字的排序:

#include <stdio.h>

#define SIZE 10
int main()
{
  int a[SIZE]={12 ,43,9,13,67,98,101,89,3,35};//十个数的无序数列
  int i,j,t;
  printf("此程序使用冒泡排序法排列无序数列!\n");
  //冒泡排序
  for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次
  {
    for(j=0;j<10-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
    {
      if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)
      {
        t=a[j+1];
        a[j+1]=a[j];
        a[j]=t;
      }
    }
  }

  printf("排列好的数列是:\n");
  //输出排列好得吃数列
  for(i=0;i<10;i++)
  {

    printf("%d ",a[i]);
  }
  return 0;
}

字符排序:

#include <stdio.h>

#define SIZE 10
int main()
{
  char a[SIZE]={'i','l','o','v','e','y','o','u','y','x'};//十个数的无序数列
  int i,j;
  char t;
  printf("此程序使用冒泡排序法排列无序数列!\n");
  //冒泡排序
  for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次
  {
    for(j=0;j<10-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
    {
      if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)
      {
        t=a[j+1];
        a[j+1]=a[j];
        a[j]=t;
      }
    }
  }

  printf("排列好的字符组是:\n");
  //输出排列好得吃数列
  for(i=0;i<10;i++)
  {

    printf("%c ",a[i]);
  }
  return 0;
}

用函数来解决这个问题:

#include <stdio.h>

void function(char a[],int);//尤其注意,此处的函数声明必须是char a[],因为这里穿的是地址,不能仅仅使用char

int main()
{
  int i;
  char a[10]={'i','l','o','v','e','y','o','u','y','x'};//十个数的无序字符数列
  printf("此程序使用冒泡排序法排列无序数列!\n");
  function(a,10);//调用冒泡排序
  printf("排列好的字符组是:\n");
  //输出排列好得吃数列
  for(i=0;i<10;i++)
  {

    printf("%c ",a[i]);
  }
  return 0;
}

void function(char a[],int m)
{
  //冒泡排序
  int i,j;
  char t;
  for(i=0;i<m-1;i++)//n个数的数列总共扫描n-1次
  {
    for(j=0;j<m-i-1;j++)//每一趟扫描到a[n-i-2]与a[n-i-1]比较为止结束
    {
      if(a[j]>a[j+1])//后一位数比前一位数小的话,就交换两个数的位置(升序)
      {
        t=a[j+1];
        a[j+1]=a[j];
        a[j]=t;
      }
    }
  }
  return;
}

执行情况:

知识总结:

冒泡排序法:也叫升序排序法,但是相比起二分法查找只能应用于有序数列,二如何将一个无序数列变的有序就可以使用冒泡排序法!!!

对上面的过程进行总结:

该思想体现在成续上的解法是:

实例:

冒泡排序不仅仅可以应用于数字同样可以应用于字符字母的快速排序:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • c语言冒泡排序法代码

    总在写 总在错, 面试也还忘记 学习就是这么个过程, 温故才知新, 望自己谨记 忘记不要紧 复习就好 //排序是有很多种方法的 ,完成从小到大的排列 复制代码 代码如下: #include <stdio.h>void sort(int *a,int len){int i=0; int j; int t;    for(i=0;i<len;i++)    {        for(j=0;j<len-i-1;j++)        {            if(a[j]>a[

  • C语言冒泡排序法心得

    记得以前在大学里学习c语言的时候,刚开始是很吃力的. 入门级别的算法中有个叫冒泡排序法,也有称为气泡排序法.那时候刚接触它就对它的名字特别感兴趣,因为觉得很有意思.好了,废话不多说了,我们先一起简单回忆下这个冒泡排序法. 一.打印行和列一般是这样的一个简单代码,输出4行4列*: for(int i = 1,i < 5,i++){ for(int j = 1,j < 5,j++){ printf("*"); } printf("n\"); } 二.打印&q

  • C语言冒泡排序法的实现(升序排序法)

    任务代码: 数字的排序: #include <stdio.h> #define SIZE 10 int main() { int a[SIZE]={12 ,43,9,13,67,98,101,89,3,35};//十个数的无序数列 int i,j,t; printf("此程序使用冒泡排序法排列无序数列!\n"); //冒泡排序 for(i=0;i<10-1;i++)//n个数的数列总共扫描n-1次 { for(j=0;j<10-i-1;j++)//每一趟扫描到a

  • c语言冒泡排序和选择排序的使用代码

    目录 1.冒泡排序 2.选择排序 区别 总结 1.冒泡排序 冒泡排序将一个列表中的两个元素进行比较,并将最小的元素交换到顶部.两个元素中较小的会冒到顶部,而较大的会沉到底部,该过程将被重复执行,直到所有元素都被排序. 冒泡排序示意图 以如图所示的冒泡排序为例,每次比较相邻的两个值,值小的交换到前面,每轮结束后值最大的数交换到了最后.第一轮需要比较4次:第二轮需要比较3次:第三轮需要比较2次:第四轮需要比较1次. 那么如何用二重循环将5个数排序呢?5个数存放在一维数组中,外层循环控制比较多少轮,循

  • Java冒泡排序法和选择排序法的实现

    冒泡排序法和选择排序法 本人学生党一枚.Java学习过程,写这个博客纯属当复习,有什么错误的地方请大家指出来在评论里指点指点我.谢谢 冒泡排序法 概念: 从前向后(或从后向前)依次比较相邻的元素,若发现逆顺序,则交换.小的向前换,大的向后换,像水底的气泡逐渐向上冒,顾名思义冒泡排序法. 通俗一点就是把大的往上挪!向冒泡一样. 是交换式排序法的一种.冒泡排序法效率较低. 冒泡排序法思路 1:外层循环:控制它要走几次. 假设你有5个数,那就要走4次,最后一次不用走,最后那个数已经在它位置了所以就要l

  • Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法

    本文实例讲述了Go语言实现冒泡排序.选择排序.快速排序及插入排序的方法.分享给大家供大家参考.具体分析如下: 算法是程序的灵魂,而排序算法则是一种最基本的算法.排序算法有许多种,这里介绍4中排序算法:冒泡排序,选择排序,快速排序和插入排序,以从小到大为例. 一.冒泡排序 冒泡排序的原理是,对给定的数组进行多次遍历,每次均比较相邻的两个数,如果前一个比后一个大,则交换这两个数.经过第一次遍历之后,最大的数就在最右侧了:第二次遍历之后,第二大的数就在右数第二个位置了:以此类推. 复制代码 代码如下:

  • C语言面试常见考点排序总结

    排序算法有两块比较重要的知识点 内存消耗 :算法的内存消耗可以通过空间复杂度来衡量,排序算法也不例外.不过,针对排序算法的空间复杂度,有一个概念是原地排序.原地排序算法是指空间复杂度是O(1)的排序算法.其中冒泡排序,插入排序.选择排序都属于原地排序算法 稳定性:针对排序算法,我们还有一个衡量指标是稳定性.这个概念是说,如果待排序的序列中存在值相等的元素,经过排序之后,相等元素之间原有的先后顺序不变. 例如我们有一组数据 2 9 3 4 8 3 按照从小到大的排序是 2 3 3 4 8 9,经过

  • C语言超详细梳理排序算法的使用

    目录 排序的概念及其运用 排序的概念 排序运用 插入排序 直接插入排序 希尔排序 选择排序 直接选择排序 堆排序 交换排序之冒泡排序 总结 排序的概念及其运用 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作. 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次 序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,则称这种排 序算法

  • 使用C语言实现12种排序方法

    1.冒泡排序 思路:比较相邻的两个数字,如果前一个数字大,那么就交换两个数字,直到有序. 时间复杂度O(n^2),稳定性:这是一种稳定的算法. 代码实现: void bubble_sort(int arr[],size_t len){ size_t i,j; for(i=0;i<len;i++){ bool hasSwap = false; //优化,判断数组是否已经有序,如果有序可以提前退出循环 for(j=1;j<len-i;j++){ //这里j<len-i是因为最后面的肯定都是最

  • C语言冒泡排序算法代码详解

    今天我们来用C语言实现一下冒泡排序 首先我们来了解一下什么叫做冒泡排序,冒泡顾名思义把质量轻的气体(如二氧化碳一样)浮到水面上(如可乐中的二氧化碳),因此冒泡排序的原理就是N个元素在一个周期中,微观上依次进行两两元素的比较,小的元素就被放在前面,大的元素放在后面,以此来进行N-1个周期,来完成冒泡排序. 上文中的一个周期,即外循环,依次进行比较,即内循环. 文字看着很迷糊?没事儿,上图 如图所示,两两元素依次进行比较,小的元素往前移动,大的元素往后移动,直至元素顺序是升序的形式,即移动了 元素-

  • C语言 冒泡排序算法详解及实例

    C语言 冒泡排序算法 冒泡排序(Bubble Sort)是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成.这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端. 冒泡排序对n个项目需要O(n2)的比较次数,且可以原地排序.尽管这个算法是最简单了解和实作的排序算法之一,但它对于少数元素之外的数列排序是很没有效率的. 冒泡排序是与插入排序拥有相等的执

随机推荐