C语言(3) - 冒泡排序 归并排序

本文详细介绍了两种经典的排序算法——冒泡排序与归并排序。冒泡排序通过不断交换相邻元素实现排序,而归并排序则采用分治策略,先将序列分为若干子序列再合并以达到排序目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.冒泡排序:将相临的两个元素进行比较,直到整个数列有序为止

 

/*
泡冒排序
比較相臨的兩個元素,直到有序為止
*/
#include 
"getData.h"

void bubble(int *array)
{
    
int i;
    
for(i=ArraySize-1;i>0;i--)
    {
        
int j;
        
for(j = ArraySize-1;j>ArraySize-i-1;j--)
        {
            
if(array[j]<array[j-1])
            {
                
int tmp = array[j-1];
                array[j
-1= array[j];
                array[j] 
= tmp;
            }
        }
    }
}

 

 2,归并排序

/*
归并排序
算法思想是每次把待排序列分成两部分,分别对这两部分递归地用归并排序,
完成后把这两个子部分合并成一个序列。
*/
#include 
"getData.h"
int CountFlag = 0;
/*

*/
void Merge(int* array,int flow,int middle,int high)
{
    
int n1 = middle-flow+1int n2 = high-middle;
    
int temp1[n1]; int temp2[n2];

    
int i;
    
for (i=0; i<n1; i++)
        temp1[i] 
= array[flow+i];
    
for (i=0; i<n2; i++)
        temp2[i] 
= array[middle+i+1];
    
int j,k;
    
for (j=0,k=0,i=flow; i<=high; i++)
    {
        
if (j<n1&&k<n2)
        {
            
if (temp1[j]>=temp2[k])
            {
                array[i] 
= temp2[k++];
            }
            
else
            {
                array[i] 
= temp1[j++];
            }
        }
        
else
        {
            
if(j>=n1&&k<n2)
            {
                array[i] 
= temp2[k++];
            }
            
if(j<n1&&k>=n2)
            {
                array[i] 
= temp1[j++];
            }
        }
    }

} 

 

转载于:https://www.cnblogs.com/uwebs/archive/2009/06/09/1454320.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值