冒泡排序

基本思路:
1)从数组开头开始比较两个数,如果前面大于后面的数,那么交换这两个数。一次比较后,最大的数在N-1项。
2)把最后比较的数设置为N-2项,从新开始比较。
3)逐步递减,直到第一项。
#include <stdio.h>
#define N 9

void bubblesort(int a[], int n);
void swap(int *x, int *y);
void printarr(int a[], int n);

void bubblesort(int a[], int n) {
	int i, j;
	for(i=n-1; i>0; i--){
		for(j=1; j<=i; j++){
			if(a[j-1]>a[j]) swap(&a[j], &a[j-1]);
		}
	}
}

void swap(int *x, int *y){
	int i = *x;
	*x = *y;
	*y = i;
}

void printarr(int a[], int n){
	int i;
	for(i=0; i<n; i++){
		printf("%d ", a[i]);
	}
	printf("\n");
}

int main(void) {
	int a[N] = {45, 8, 7, 31, 56, 54, 99, 33, 24};
	bubblesort(a, N);
	printarr(a, N);
	return 0;
}


你可能感兴趣的:(冒泡排序)