MAIN

必备内容

黑字加粗部分表示重点内容

算法:

  • 八种排序及其性能分析:
    在这里插入图片描述

    • 冒泡排序:

思想

在要排序的一组数中,对当前还未排好序的范围内的全部数, 自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。 即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 每一趟排序后的效果都是讲没有沉下去的元素给沉下去。
 <h2>流程</h2> 
  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个
  1. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数
  2. 针对所有的元素重复以上的步骤,除了最后一个
  3. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

实现:

图片:

在这里插入图片描述

算法实现

	#include <stdio.h>
	#include <stdlib.h>
	#include <string.h>
	#include <assert.h>
	#define N 8
	
	void Bubble_sort(int *arr, int len); 
	int main(void)
	{
		int arrary[N] = {3,2,5,8,4,7,6,9};
		printf("冒泡排序!");
		printf("\n");
	//	printf("输入待排序数字");
		
	//	for(int i=0;i<N;i++){ 
	//		scanf("%d",&arrary[i]);
	//	} 
		//原始数据 
		for(int i=0;i<N;i++){ 
			printf("%d\t",arrary[i]);
		} 
		printf("\n");
		printf("----------------------------------------------");
		printf("\n");
		//排序 
		Bubble_sort(arrary,N);
		//结果 
		for(int i=0;i<N;i++){ 
			printf("%d\t",arrary[i]);
		} 
	} 
	
	
	void Bubble_sort(int *arr, int len)
	{
	    assert(arr != NULL);
	    int tmp = 0;
	    bool swap = false;//加判断条件  减少比较次数
	    for (int i = 0; i < len -1; i++)
	    {
	        for (int j = 0; j < len - 1 - i; j++)
	        {
	            if (arr[j] > arr[j + 1])//升序 
	            {
	                tmp = arr[j];
	                arr[j] = arr[j + 1];
	                arr[j + 1] = tmp;//交换
	                swap = true;
	            }
	        }
	        if (!swap)
	        {
	            return;
	        }
	    }
	}
  • 快速排序:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章