1
#include <stdio.h>
#include <stdlib.h>
/*
设待排数据元素序列中的元素个数为n。最多做n-1趟,i=1,2,3...n-1.
在第i趟中,从后向前,j=n-1,n-2...i,两两比较V[j-1]和V[j]的关键字,
如果发生逆序,则交换V[j-1]和V[j] .
*/
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void BubbleSort(int array[],int len)
{
int i = 0;
int j = 0;
int temp = 0;
for(i=0;i<len-1;i++)
{
for(j=len-1;j > i;j--)
{
if(array[j-1]>array[j])
{
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}
}
}
}
void println(int array[],int len)
{
int i = 0;
for(i=0;i<len;i++)
{
printf("%d\n",array[i]);
}
}
int main(int argc, char *argv[])
{
int array[] = {21,25,49,25,16,8};
int len = sizeof(array) / sizeof(array[0]);
println(array,len);
BubbleSort(array,len);
println(array,len);
return 0;
}
参考例子:
#include <stdio.h>
void println(int array[], int len)
{
int i = 0;
for(i=0; i<len; i++)
{
printf("%d ", array[i]);
}
printf("\n");
}
void swap(int array[], int i, int j)
{
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
void BubbleSort(int array[], int len) // O(n*n)
{
int i = 0;
int j = 0;
int exchange = 1;
for(i=0; (i<len) && exchange; i++)
{
exchange = 0;
for(j=len-1; j>i; j--)
{
if( array[j] < array[j-1] )
{
swap(array, j, j-1);
exchange = 1;
}
}
}
}
int main()
{
int array[] = {21, 25, 49, 25, 16, 8};
int len = sizeof(array) / sizeof(*array);
println(array, len);
BubbleSort(array, len);
println(array, len);
return 0;
}
1