冒泡排序

代码如下: 

#include<stdio.h> 
#include<stdlib.h>
//升序排序
void Bubble_sort(int a[], int size){
	int i,j,temp;
	for(int i=0 ; i<size-1 ;i++) //size-1 : 不用和自己比较
	{
			int flag =0;//比较记号
			//在a[0]到a[size-i-1]之间比较,将最大的数放最后(即a[size-i-1])
			for(int j=0 ; j<size-i-1 ; j++)	
			{
				if(a[j] > a[j+1])//比较,大的在后面
				{
					temp = a[j]; a[j]= a[j+1]; a[j+1]=temp;
					flag =1;
				}
			}
			//若flag为0,则在该轮次没有交换动作,说明排序已经完成,break跳出循环
			if(flag == 0 ) break;	
	}
}

void main()   
{	
	int a[10];
	printf("输入10个整形数据(整数):");
	for(int i=0;i<10 ; i++)
		scanf("%d",&a[i]);  
	
	Bubble_sort(a,10);	//排序处理
	printf("排序后的数组:\n");
	for(int i=0;i<10 ; i++)
		printf("%d ",a[i]);  

	system("pause");//屏幕暂停
}

C语言--冒泡排序和简答选择排序-LMLPHP

简单选择排序

简单选择排序(Select Sort)示意图如下图所示。 

C语言--冒泡排序和简答选择排序-LMLPHP

代码如下:

#include<stdio.h> 
#include<stdlib.h>

void SelectSort(int arr[],int n){
	//minIndex用于记录每一趟中最小元素的下标
	int i,j,temp,minIndex;
	/*
		外层循环,用于控制第1层到第n-1轮排序
		第i轮循环时,后面部分的元素的下标范围为(i-1) 到 (n-1)
	*/
	for( i=1; i<n ; i++ ){
		//将后面(未排序)部分的第1个元素赋予minIndex
		minIndex = i-1;

		for(j =i ; j < n ; j++ ){	//找到本轮循环中最小元素
			if( arr[j]<arr[minIndex] ){	
				minIndex = j;
			}
		}
		//若本轮中最小的元素不是后面部分的第1个元素,则需要交换元素
		if(minIndex != i-1 ){
			temp=arr[minIndex]; arr[minIndex]=arr[i-1]; arr[i-1]=temp;
		}
	}
}

void main(){	
	int a[10];
	printf("输入10个整形数据(整数):");
	for(int i=0;i<10 ; i++)
		scanf("%d",&a[i]);  
	
	SelectSort(a,10);	//排序处理
	printf("排序后的数组:\n");
	for(int i=0;i<10 ; i++)
		printf("%d ",a[i]);  
	printf("\n");
	system("pause");//屏幕暂停
}

C语言--冒泡排序和简答选择排序-LMLPHP

10-19 06:26