冒泡排序示例

目录

一、冒泡排序核心

二、冒泡排序可执行C程序

三、冒泡排序结果及解析


更正错误2019.12.08

一、冒泡排序核心

void bubble_sort(int* src,int length)  //整数数组的排序
{
    int i = 0,j = 0;
    int tmp = 0;

    /* 入参检查 */
    if(NULL == src || length <= 0)
    {
        printf("[Error]:Func:%s input is invaild!",__FUNCTION__);
        return;
    }


  /* 冒泡排序核心算法 */
  for(i=0;i src[j+1])      //将大的数往后挪
      {
        tmp = src[j];
        src[j] = src[j+1];
        src[j+1] = tmp;
      }
    }
  }
    
}

二、冒泡排序可执行C程序

#include 
#include 
#include 
 
int **bbule_point = NULL;
 
/* 冒泡排序子函数 */
int bbule_sort(int* src,int length)
{
  int i=0;
  int j=0;
  int tmp=0;
  int record_err = 0;
  int* record_point = NULL;
 
  if(NULL == src || 0 >= length)
  {
      printf("Func:%s Input Err:src=%d length=%d\n\r",__FUNCTION__,(int)src,length);
      return -1;
  }
 
  /* 申请存放每次排序结果的数组的指针的数组空间 */
  bbule_point = (int**)malloc(length*sizeof(int*));
  if(NULL == bbule_sort)
  {
    printf("Func:%s Record Err,Malloc Failed!\n\r",__FUNCTION__);
    record_err = 1;
  }
  memset(bbule_point,0,sizeof(int*)*length);
  record_point = malloc(length*sizeof(int));
  if(NULL == record_point)
  {
    printf("Func:%s Record Err,Malloc Failed!\n\r",__FUNCTION__);
  }
  else
  {
    memcpy(record_point,src,sizeof(int)*length);
    bbule_point[0] = record_point;
  }
 
  /* 冒泡排序核心算法 */
  for(i=0;isrc[j+1])      //将大的数往后挪
      {
        tmp = src[j];
        src[j] = src[j+1];
        src[j+1] = tmp;
      }
    }
    /* 一趟排序完成,记录一下 */
    if(!record_err)
    {
      record_point = (int*)malloc(sizeof(int)*length);
      if(NULL == record_point)
      {
        printf("Func:%s Record Err,Malloc Failed!\n\r",__FUNCTION__);
        continue;
      }
      memcpy(record_point,src,sizeof(int)*length);
      bbule_point[i+1]=record_point;
    }
  }
 
  return 0;
}
 
void printf_str(int *src,int length)
{
  int i=0;
 
  if(NULL == src || 0 == length)
  {
    printf("Func:%s Input Err:src=%d length=%d\n\r",__FUNCTION__,(int)src,length);
    return ;
  }
 
  printf("数组元素:");
  for(i=0;i

三、冒泡排序结果及解析

3.1、第一组数据:完全降序的数组,将其排序为完全升序的数组

冒泡排序示例_第1张图片

排序过程:将大数逐一往后挪

3.2、第二组数据:将乱序的数组排序为升序的数组

冒泡排序示例_第2张图片

排序过程:将大数逐一往后挪,逐一乱序时,冒泡是逐步挪动数据的,一次挪动的不止一个数据,原因:每次排序都只判断当前位置最新数据和后一个数据的大小,并不是先找出最大的数据然后再移动最大的数据。

你可能感兴趣的:(交大软工初试)