C语言之单向冒泡排序改进版

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言之单向冒泡排序改进版相关的知识,希望对你有一定的参考价值。

C语言之单向冒泡排序改进版

改进的地方:在比较元素大小时候如果前面的元素小于后面的元素就跳过这一轮比较。
  • C源码:
#include <stdio.h>

void bubbleSort(int arr[], int n)
{
	int i, j, tmp,flag = 1;

	for (i = 0; i < n - 1 && flag == 1; i++)
	{flag = 0; //每次开始flag置零
		for (j = 1; j < n; j++)
		{//比较第一轮
			if (arr[j] < arr[j - 1])
			{//比较数组中前后位置的数大小
				tmp = arr[j];
				arr[j] = arr[j - 1];
				arr[j - 1] = tmp;
				flag = 1; //如果有数据交换,则flag为1
			}
		}
	}
}

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


int main()
{
	int arr[10] = {2, 5, 6, 4, 3, 7, 9, 8, 1, 0};
	printArray(arr, 10);
	bubbleSort(arr, 10);
	printArray(arr, 10);
	return 0;
}

在这里插入图片描述

以上是关于C语言之单向冒泡排序改进版的主要内容,如果未能解决你的问题,请参考以下文章

数据结构c语言版八大算法(上)图文详解带你快速掌握——希尔排序,堆排序,插入排序,选择排序,冒泡排序!

冒泡排序改进版(java)

图解算法系列之冒泡排序(Low版)

数据结构之--冒泡排序算法及改进

C语言的链表怎么排序

C语言之双向冒泡排序