1. 程式人生 > >C語言之氣泡排序的優化

C語言之氣泡排序的優化

1、原氣泡排序

void print_arr(int arr[], int sz)
{
    int i = 0;
    for (i = 0; i < sz;i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");

}

void bubble_sort(int arr[], int sz)
{
    int i, j;

    for (i = 0; i < sz - 1; i++)
    {
        for (j = 0; j < sz - 1 - i; j++)
        {

            if
(arr[j] > arr[j + 1]) //後面小於前面的 交換 { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } int main() { int arr[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 }; int sz = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, sz); print_arr(arr, sz); return
0; }

2、思路圖

這裡寫圖片描述

//氣泡排序的優化
//優化:讓已有的演算法更加快速、省時,省空間
#include<stdio.h>
#include<stdlib.h>
void bubble_sort(int arr[], int sz)
{
    int i, j;

    for (i = 0; i < sz - 1; i++)
    {
        int flag = 1;
        for (j = 0; j < sz - 1 - i; j++)
        {

            if (arr[j] > arr[j + 1
]) //後面小於前面的 交換 { flag = 0; int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } if (flag) break; } } void print_arr(int arr[], int sz) { int i = 0; for (i = 0; i < sz;i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int arr[] = { 0, 1, 2, 4, 3, 5, 6, 7, 8, 9 }; int sz = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, sz); print_arr(arr, sz); return 0; }