冒泡排序
冒泡排序算法的运作如下:时间复杂度为O(n*n)
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
/* data is an int array, count is the number of the array */
void BubbleSort(int *data,int count){
int temp;
bool flag;
for (int i=0;i<count-1;i++ ){
flag = false;
for (int j=0;j<count-1-i ; j++){
if (data[j]>data[j+1]){/* 如果前一个数字比后一个大,则交换两个位置 */
temp = data[j];
data[j] = data[j+1];
data[j+1] = temp;
flag=true;
}
}
if(!flag) return;/* 如果没有发生交换则说明排好序了 */
}
}
/* output function */
void array_print(int *data,int n){
for (int i=0;i<n ;i++ ){
printf("%3d,",data[i]);
}
}
int main()
{
const int Num = 10;
int data[Num]={7,5,6,3,9,2,8,10,25,5};
printf("\nBefore the sort the array is:\n");
array_print(data,Num);
BubbleSort(data,Num);
printf("\nAfter the sort the array is:\n");
array_print(data,Num);
return 0;
}