首页 > 编程语言 > 详细

用冒泡排序—整数序列、字符串序列

时间:2015-12-04 21:07:07      阅读:345      评论:0      收藏:0      [点我收藏+]

分析:

冒泡排序原理:如果升序排序,将一组整数序列的第一个元素和第二个元素相比较,如果第一个元素大于第二个元素,那么交换这两个元素,如果不满足条件就不交换;然后将第二个元素和第三个元素比较,直到和最后一个元素和它前面的一个元素比较后,第一次排序完成,最大的一个数在最后。

最多排序n-1次(设有n个元素),就可排序完成。过程如下图:

 

技术分享

 

排序字符串序列也是根据这个原理,只是将比较两个数大小改为比较两字符串大小,用strcmp可比较字符串,函数传参时应该用二级指针,因为字符串数组中存放的实际是每个字符串的首地址,我们要用二级指针保存数组的首地址。

 

冒泡排序一组整数序列:

#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
void bubble_sort(int *arr, int size)
{
 assert(arr);
 int i = 0;
 int j = 0;
 int tmp = 0;
 int flag = 0;
 for (i = 0; i < size - 1; i++)
 {
  flag = 0;
  for (j = 0; j < size - 1 - i; j++)
  {
   if (arr[j]>arr[j + 1])
   {
    tmp = arr[j];
    arr[j] = arr[j + 1];
    arr[j + 1] = tmp;
    flag = 1;
   }

  }
  if (flag == 0)
   break;
 }

}
int main()
{
 int arr[] = { 9,8,7,6,5,4,3,2,1,0};
 int size = sizeof(arr) / sizeof(arr[0]);
 int i = 0;
 bubble_sort(arr, size);
 for (i = 0; i < size;i++)
 printf("%d ", arr[i]);
 system("pause");
 return 0;
}

冒泡排序一组字符串序列:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void bubble_sort(char **str,int size)
{
 int i = 0;
 int j = 0;
 int flag = 0;
 char *tmp = NULL;
 for (i = 0; i < size - 1; i++)
 {
  flag = 0;
  for (j = 0; j < size - 1 - i; j++)
  {
   if (strcmp(*(str + j), *(str + j + 1))>0)
   {
    tmp = *(str + j);
    *(str + j) = *(str + j + 1);
    *(str + j + 1) = tmp;
    flag = 1;
   }
  }
  if (flag == 0)
   break;
 }
}
int main()
{
    char *str[] = { "ffff","bbbadd","bbbaaaa","cccccc","ddddddd","ssssss","eeeeeee"};
 int i = 0;
 int size = sizeof(str) / sizeof(str[0]);
 bubble_sort(str,size);
 for (i = 0; i < size; i++)
 {
  printf("%s ", str[i]);
 }
 system("pause");
 return 0;
}

用冒泡排序—整数序列、字符串序列

原文:http://haipi.blog.51cto.com/10778780/1719607

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!