冒泡排序

冒泡排序是是一种基础的稳定排序算法。

原理是比较相邻两个元素的大小,然后按照升序或者降序的顺序交换两个元素的位置,通过嵌套的for循环遍历整个数组,
一共执行N轮(数组中元素的个数)比较,每一轮比较都会排除最后的一个元素。

不改变原数组的情况下实现冒泡排序

#include <stdio.h>
#include <string.h>

void BubbleSort(int *arr,int sz);
 
int main ()
{
	int i;
	int a[]={123,3,34,54,6,57,8};
	int b[sizeof(a)/sizeof(a[0])];
	
	memmove(b,a,sizeof(a));
	BubbleSort(b,sizeof(a)/sizeof(a[0]));
	
	for(i=0;i<7;i++)
	printf("%d ",b[i]);
	printf("\n");
	printf("%d ",b[sizeof(a)/sizeof(a[0])-1]);
	return 0;
}

void BubbleSort(int *arr,int sz)
{
    int i = 0 , j = 0 , tmp;
    bool flag=1;
    while(flag)
    {
    	flag=0;
	    for(i=0;i<sz;i++)
		{
	        for(j=0;j<sz-i-1;j++)
			{	
	            if(arr[j]>arr[j+1])
				{
	                tmp = arr[j];
	                arr[j] = arr[j+1];
	                arr[j+1] = tmp;
					flag=0;
	            }  
	    	}
	    }
	}
}

posted @ 2019-02-27 21:18  年小猫  阅读(144)  评论(0编辑  收藏  举报