冒泡排序及其优化

原创 2016年05月31日 18:59:21

冒泡排序的基本思路是(以升序为例):每次将相邻两个数字进行比较,将小的数字放在大的前边。例如已知六个数字为9,8,5,4,2,0,第一次现将最前边的9和8进行调换,其次再将9和5进行调换......如图(只进行了两趟交换)


如此进行下去,如果有n个数,就要进行n-1趟比较;在第一趟要进行n-1次交换,在第j次就要进行n-j次交换。

void bubble_sort(int *p,int sz)              //冒泡排序
{
    int i = 0;
    int temp = 0;
    for(i=0; i<sz-1; i++)
    {
        int j = 0;
        for(j=0; j<sz-i-1; j++)
        {
            if(*(p+j) > *(p+j+1))
            {
                temp = *(p+j);
                *(p+j) = *(p+j+1);
                *(p+j+1) = temp;
            }
        }          
    }
}


假设有一组数字:1 2 3 4 5 6 7 8 9 0,那么用上边的方法也是可以实现的,但是,对于前边9个数字来说它们已经是有序的了,如果还用这种方法就会使效率降低很多(假设有n个数),因此,在此基础上可以将代码优化——每趟比较时,如果相邻两个数字之间满足升序或者降序的要求,那就不在交换,如果不满足,就前后交换。
void bubble_sort(int *p,int sz)              //冒泡排序--优化
{
    int flag = 1;
    int i = 0;
    int temp = 0;
    for(i=0; i<sz-1; i++)
    {
        int j = 0;
        flag = 1;
        for(j=0; j<sz-i-1; j++)
        {
            if(*(p+j) > *(p+j+1))
            {
                temp = *(p+j);
                *(p+j) = *(p+j+1);
                *(p+j+1) = temp;
                flag = 0;
            }
        }          
        if(flag == 1)
        {
            return ;
        }
    }
}




版权声明:本文为博主原创文章,未经博主允许不得转载。

JAVA冒泡排序及其优化

  • 2015年11月02日 16:58
  • 3KB
  • 下载

冒泡排序优化算法

  • 2013年11月26日 20:02
  • 2KB
  • 下载

冒泡排序Java语言实现及其优化

冒泡排序性能数据: package com.shan.bubbleSort;/** * * @author shan * 冒泡排序算法:需要便利几次数组,在每次遍历中,比较相邻的元素。如果某...
  • stuShan
  • stuShan
  • 2015年10月14日 22:49
  • 405

经典冒泡排序优化

  • 2014年09月09日 17:23
  • 2KB
  • 下载

冒泡排序算法及其两种优化

冒泡排序算法及其两种优化 1、排序方法      将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[i].key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R...

冒泡排序算法及其简单优化算法

#include using namespace std; #define type long typedef int (*compareFunc)(type a,type b);//定义函数指针 ...

未优化的冒泡排序算法.c

#include #include #define MAX 12 int main(void) { int i, j; int array[MAX]; printf("\n**...

使用数组和指针的形式实现冒泡排序,并优化。bubble_sort();

 方法一: #define CRT_SECURE_NO_WARNINGS 1 #include #include #include   int main() ...

Java算法实现之冒泡排序及优化

Java算法实现之冒泡排序及优化

冒泡排序的优化算法

/* *减少了冒泡排序外面的循环的次数,如果在第K项后没有产生交换, *则K项之后所有的项必定有序,如果k=0则说明整个数组都有序,则退出 */ int* sort(int a[],int le...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡排序及其优化
举报原因:
原因补充:

(最多只允许输入30个字)