1.选择排序法 2.冒泡排序法 3.快速排序法

1.选择排序法

#include<stdio.h>
#define N 10
int main()
{
    
    
	int a[N];
	int i, j, t, max;
	for(i=0; i<N; i++)//循环输入 
	{
    
    
		printf("a[%d]=",i); 
		scanf("%d",&a[i]);
	}
	
	for(i=0; i<N-1; i++)
	{
    
    
		max = i;
		for(j=i+1; j<N; j++){
    
    
			if(a[max] < a[j]){
    
    
				max = j; 
			}
		}
		t = a[max];
		a[max] = a[i];
		a[i] = t; 
	}
	
	printf("\n");
    for(i=0; i<N; i++)
    {
    
    
		printf("a[%d]=%d\n",i,a[i]);
    }

	return 0;
} 

2.冒泡排序法

#include<stdio.h>
#define N 10
int main()
{
    
    
	int a[N];
	int i,j,t;
	for(i=0;i<N;i++)//循环输入 
	{
    
    
		printf("a[%d]=",i); 
		scanf("%d",&a[i]);
	}
	for(i=0;i<N-1;i++)
	{
    
     
       for(j=0;j<N-1-i;j++)
	   {
    
    
            if(a[j]>a[j+1])//进行排序 
            {
    
    
                t=a[j];
				a[j]=a[j+1];
				a[j+1]=t;      	
            }	
	   }
	}
	
	  for(i=0;i<10;i++)
	  {
    
    
		printf("a[%d]=%d\n",i,a[i]);
	  }

	return 0;
} 

3.快速排序法

#include<stdio.h>
int a[100], temp;//temp为基准数 

void Template(int left, int right)
{
    
    
	int i ,j ,t ;
	if(left>right){
    
    
		return;
	}
	temp = a[left];
	i = left;
	j = right;
	
	while(i != j){
    
    
		while(i<j && a[j]>=temp){
    
    
		      j--;	
		}
		while(i<j && a[i]<=temp){
    
    
			  i++;
		}
		if(i<j){
    
    
			t = a[i];
			a[i] = a[j];
			a[j] = t;
		}
	}
	a[left] = a[i];
	a[i] = temp;

	Template(left, i-1);//左递归 
	Template(i+1 , right);//右递归 
}

int main()
{
    
    
	int n, i;
	printf("输入存储在数组中元素的个数:\t");
	scanf("%d", &n);
	printf("\n请输入存储在数组中的数:\n");
	for(i=0; i<n; i++)
		scanf("%d", &a[i]);
	Template(0, n-1);
	
	for(i=0; i<n; i++)
		printf("\na[%d]=%d",i,a[i]);
		return 0;
} 

猜你喜欢

转载自blog.csdn.net/qq_52001969/article/details/113341148