基础算法之排序(1)--冒泡排序 改进

/**********************************************************************************************************         
* Function        : test         
* Create Date     : 2014/03/23        
* Author          : NTSK13         
* Email           : beijiwei@qq.com         
* Copyright       : 欢迎大家和我一起交流学习,转载请保持源文件的完整性。         
                             任何单位和个人不经本人允许不得用于商业用途         
                             转载请注明 转自 http://blog.csdn.net/beijiwei         
* Version          : V0.1           
* date             : 2014/03/23       
* history          : V0.1            
***********************************************************************************************************         
          
算法基础之排序(1)--冒泡排序 改进(1)


基本思想: 对待排序的一组数据从前之后进行扫描,若发现相邻的两个数不同时,将这两个数进行交换.
		  升序和降序是同样道理. 

 假如待排序的一组数存于array[N],则需要对数组进行N-1次扫描
 
 第1次扫描:  array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换.
 第2次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换.
   .
   .
   .
 第N-1次扫描: array[0]和array[1]对比交换,之后array[1]和array[2]对比交换...array[N-1] 和array[N]对比交换.
 结束.

缺点:     如果N>>100很大,当在第3次扫描结束之后,发现数据已经按照要求排列好了, 则以后的操作就是浪费功夫.
		   
改进:     在一次扫描时,设一个标志位,若某次扫描结束,标志位没有置位,则退出


**********************************************************************************************************/                  
#include<stdio.h>                   
                                        
int main()                  
{                  
    int i=0,j=0,tmp=0,flag=0;
	int array[10]={1,2,0,3,4,5,6,7,8,9};    
      
    printf("Before sort, The element of array is: \n");    
  
    for(i=0;i<10;i++)  
    {  
        printf("%d \t",array[i]);     
    }  
/*********************************************************************************************************/  
    for(i=0;i<9;i++)  
    {
		flag=0;
		for(j=0;j<9;j++)  
		{  
			if(array[j]>array[j+1])  
			{  
				tmp=array[j];  
				array[j]=array[j+1];  
				array[j+1]=tmp;
				flag=1;
			}  
      
		}
		if(flag==0)
			break;	
	}
/*********************************************************************************************************/  
    printf("\n After sort, The element of array is: \n");    
    for(i=0;i<10;i++)  
    {  
        printf("%d \t",array[i]);     
    }  
    
    printf("\n");     
  
    return 0;    
}    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值