c语言实现冒泡排序

it2023-12-19  64

冒泡排序的基本思想:从后往前两两比较相邻元素的值(也可从前往后,看具体情况而定),若为逆序(即a[i-1]>a[i]),则交换它们,直到序列比较完。这是第一趟冒泡,做n-1次冒泡就能把所有元素排好序。

#include <stdio.h> void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; } void BubbleSort(int a[], int n) { int flag = 0; int i,j; for(i = 0; i < n-1; i++) { flag = 0; //表示本趟冒泡排序是否发生交换的标志 c语言里没有bool函数 所以用0.1来标志false与true for(j = n-1; j > i; j--) { if(a[j-1] > a[j]) { swap(&a[j-1], &a[j]); //因为要把他们实际所在的值交换 所以要加& flag = 1; } } if(flag = 0) //为0说明没有交换 则排序完成 return; } } int main() { int a[6] = {1,3,2,5,6,0}; BubbleSort(a, 6); for(int i = 0; i < 6; i++) { printf("%d ", a[i]); } return 0; }
最新回复(0)