정렬 알고리즘 1 의 거품 정렬

1350 단어 거품 정렬
레 퍼 런 스http://blog.csdn.net/morewindows/article/details/6657829
거품 을 일 으 켜 정렬 하 는 사상: 매번 비교 할 때마다 정렬 대기 수 중 가장 큰 것 을 선택 하 는 것 이다.다시 말 하면 첫 번 째 는 가장 큰 것 을 뽑 고 두 번 째 는 두 번 째 큰 것 을 뽑 고...
#include <stdio.h>
void swap(int *a,int *b)
{
	int temp;
	temp=*b;
	*b=*a;
	*a=temp;
}
/*       */
void bubblesort(int a[],int n)
{
	int i,j;
	for(i=0;i<n-1;i++)//  n-1   
	{
		for(j=1;j<n-i;j++)
		{
			if(a[j-1]>a[j])
				swap(&a[j-1],&a[j]);
		}
	}
}
/*   ,  flag   ,  flag=0,       ,        ,      */
void bubblesort1(int a[],int n)
{
	int k,j,flag=1;
	k=n;
	while(flag)//while    
	{
		flag=0;
		for(j=1;j<k;j++)
		{
			if(a[j-1]>a[j])
			{
				swap(&a[j-1],&a[j]);
				flag=1;// flag=1         ,     
			}
		}
		k--;
	}
}
/*   ,         ,              ,   100     ,   10   ,  90      
      10   ,      ,                     。*/

void bubblesort2(int a[],int n)
{
	int k,j,flag;
	flag=n;
	while(flag>1)// flag=1 ,      
	{
		k=flag;// k            
		for(j=1;j<k;j++)
		{
			if(a[j-1]>a[j])
			{
				swap(&a[j-1],&a[j]);
				flag=j;
			}
		}
	}
}


/*    */
void print(int a[],int n)
{
	int i;
	for(i=0;i<n;i++)
	{
		printf("%d",a[i]);
	}
}
int main(void)
{
	int a[5]={3,5,1,6,7};
	//bubblesort(a,5);
	//bubblesort1(a,5);
	bubblesort2(a,5);
	print(a,5);
}

좋은 웹페이지 즐겨찾기