【C语言】--冒泡排序详细解答 内含冒泡思想

1、 冒泡排序法

                  数组 int arr[5]={1, 2 , 3 , 4 , 5}

                    第一轮  arr[0] 和arr[1]进行比较   

                          If(arr[0]<arr[1])   交换位置

                          2  1 3  4   5

                            If(arr[1]<arr[2]])   继续交换

                                2  3  1 4   5

                            If(arr[2]<arr[3]])   继续交换

                                2  3  4  1   5

                            If(arr[3]<arr[4])   继续交换

                                2  3  4  5   1

                  第二轮

                                   If(Arr[0]<arr[1])   继续交换

                                   3 2  4  5  1

                                   If(Arr[1]<arr[2])   继续交换

                                   3 4  2  5  1

                                   If(Arr[2]<arr[3])   继续交换

                                   3 4  5  2  1

                  第三轮

                                   If(Arr[0]<arr[1])   继续交换

                                   4 3  5  2  1

                                   If(Arr[1]<arr[2])   继续交换

                                   4 5  3  2  1

                  第四轮

                                   If(Arr[0]<arr[1])   继续交换

                                   5 4  3  2  1

                  总结上面一共比n-1 轮  第一轮比n-1次 第二轮比n-2次 第三轮比n -3次  第四轮比n-4  


#include<stdio.h>
#define N 5
int main(void){

	int i = 0;
	int j = 0;
	float arr[N]={0};
	float temp,max,two;

	//给数组复制
	printf("请输入5个数:\n");
	for(i=0;i<N;i++){
		scanf("%f",&arr[i]);
		}
	//求出最大值
	max = arr[0];
	for(i=0;i<N;i++){
	if(max<arr[i]){
	
		max = arr[i];
	}
	}
	printf("最大值max=%.1f\n",max);
	//冒泡排序(从小到大)从大到小只需要换<就行	
	for(i=0;i<N;i++){          //这个表示的是轮
		for(j=0;j<N-1;j++){  //这个表示的比的次数
		if(arr[j]>arr[j+1]){
		temp =arr[j];	
		arr[j] = arr[j+1];
		arr[j+1]=temp;
			}
			}

		}
	printf("排序结果如下:\n");
	for(i = 0;i<N;i++){
		printf("%.1f ",arr[i]);
		}	
		
	printf("\n");
	

		return 0;
	}

猜你喜欢

转载自blog.csdn.net/NBDR_YL/article/details/80280126
今日推荐