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;
	        }
	    }
	}
  • 快速排序:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章