冒泡排序法---排序算法(三)

1.排序原理

每次交换将最大的移到顶端,将像是水泡一样往上冒,所以将冒泡排序
例如:7 6 5 4 3 2 1
第一次 7>6所以交换7和6得6 7 5 4 3 2 1
第二次 7>5所以交换7和5得6 5 7 4 3 2 1
第三次 7>4所以交换7和4得6 5 4 7 3 2 1
第四次 7>3所以交换7和3得6 5 4 3 7 2 1
        第五次 7>2所以交换7和2得6 5 4 3 2 7 1
        第六次 7>1所以交换7和1得6 5 4 3 2 1 7
以上为一次冒泡排序,将最大的7冒泡到顶端
然后再对 6 5 4 3 2 1进行第二次冒泡排序 得5 4 3 2 1 6
然后再对 5 4 3 2 1进行第三次冒泡排序行4 3 2 1 5
然后 再对4 3 2 1进行第四次冒泡排序行3 2 1 4
然后再对3 2 1 进行第五次冒泡排序得2 1 3
最后对2 1 进行第六次冒泡排序得1 2 
整个排序结果得:1 2 3 4 5 6 7


2.排序代码

#include <stdio.h>

void printArray(int a[],int size){  
    printf("数组为:[%d] ",a[0]);  
    for (int i=1;i<size;i++)  
    {  
        printf(" %d ",a[i]);  
    }  
    printf("
");  
}
void main()
{
	//a[0]为监视哨
	int a[8]={0,7,6,5,4,3,2,1}; 
	int len=8;
	for (int i=1;i<len;i++)
	{
		
		for (int j=2;j<=len-i;j++)
		{
			printf(" i=%d j=%d ",i,j);
			if (a[j-1]>a[j])
			{
				printf("[%d]交换[%d]",a[j-1],a[j]);
				a[0]=a[j];
				a[j]=a[j-1];
				a[j-1]=a[0];
			}
			printArray(a,len);
		}
	}
	printArray(a,len);
}



3.排序结果

 i=1 j=2 [7]交换[6]数组为:[6]  6  7  5  4  3  2  1
 i=1 j=3 [7]交换[5]数组为:[5]  6  5  7  4  3  2  1
 i=1 j=4 [7]交换[4]数组为:[4]  6  5  4  7  3  2  1
 i=1 j=5 [7]交换[3]数组为:[3]  6  5  4  3  7  2  1
 i=1 j=6 [7]交换[2]数组为:[2]  6  5  4  3  2  7  1
 i=1 j=7 [7]交换[1]数组为:[1]  6  5  4  3  2  1  7
 i=2 j=2 [6]交换[5]数组为:[5]  5  6  4  3  2  1  7
 i=2 j=3 [6]交换[4]数组为:[4]  5  4  6  3  2  1  7
 i=2 j=4 [6]交换[3]数组为:[3]  5  4  3  6  2  1  7
 i=2 j=5 [6]交换[2]数组为:[2]  5  4  3  2  6  1  7
 i=2 j=6 [6]交换[1]数组为:[1]  5  4  3  2  1  6  7
 i=3 j=2 [5]交换[4]数组为:[4]  4  5  3  2  1  6  7
 i=3 j=3 [5]交换[3]数组为:[3]  4  3  5  2  1  6  7
 i=3 j=4 [5]交换[2]数组为:[2]  4  3  2  5  1  6  7
 i=3 j=5 [5]交换[1]数组为:[1]  4  3  2  1  5  6  7
 i=4 j=2 [4]交换[3]数组为:[3]  3  4  2  1  5  6  7
 i=4 j=3 [4]交换[2]数组为:[2]  3  2  4  1  5  6  7
 i=4 j=4 [4]交换[1]数组为:[1]  3  2  1  4  5  6  7
 i=5 j=2 [3]交换[2]数组为:[2]  2  3  1  4  5  6  7
 i=5 j=3 [3]交换[1]数组为:[1]  2  1  3  4  5  6  7
 i=6 j=2 [2]交换[1]数组为:[1]  1  2  3  4  5  6  7
数组为:[1]  1  2  3  4  5  6  7





原文地址:https://www.cnblogs.com/whzhaochao/p/5023475.html