冒泡排序
冒泡排序是算法排序中最基础的排序之一。
排序思路:
方法一:从后向前进行遍历,并进行相邻元素的比较,将较小元素放在较大元素之前,继续进行比较。每一轮比较结束后,都是 将基表数组中最小的元素,放置于本轮比较数组的最前面。
方法二:从前向后进行比较,并进行相邻元素的比较,将较大元素放在较小元素的后面,继续进行比较。每一轮比较结束后,都是将比较数组中最大的元素,放置于本轮比较数组的最后面。
本次,将于大家分享第一种方法的实现:
冒泡函数程序代码:
//函数的实现
void BubbleSort(int array[],size_t size){
if(size <=1){
return;
}
//数组元素数大于1
size_t bount = 0;//边界
for(;bount<size;++bount){
//从后往前遍历,将关键字小的放置在关键字大的前面
//关键字相等时,相对位置不发生改变
size_t cur = size - 1;
for(;cur>bount;--cur){
if(array[cur] < array[cur-1]){
swap(&array[cur],&array[cur-1]);
}
}//二次遍历结束
}//一次遍历结束
return;
}
交换函数程序代码:
//交换函数
void swap(int *a,int *b){
int tmp =*a;
*a = *b;
*b = tmp;
return;
}
测试用例代码:
//主函数
int main(){
int arr[] = {1,2,6,3};
int i =0;
printf("排序前:");
for(;i<sizeof(arr)/sizeof(arr[0]);++i){
printf("%d ",arr[i]);
}
printf("\n");
BubbleSort(arr,sizeof(arr)/sizeof(arr[0]));
i =0;
printf("排序前:");
for(;i<sizeof(arr)/sizeof(arr[0]);++i){
printf("%d ",arr[i]);
}
printf("\n");
return 0;
}
程序检测结果显示: