冒泡排序
冒泡排序是是一种基础的稳定排序算法。
原理是比较相邻两个元素的大小,然后按照升序或者降序的顺序交换两个元素的位置,通过嵌套的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;
}
}
}
}
}