冒泡排序C语言

冒泡排序是一种简单的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。这个过程会持续到没有更多的元素需要交换,也就是说数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

以下是一个用C语言实现的冒泡排序的例子:


#include <stdio.h>  
  
void bubbleSort(int array[], int size) {  
  for (int step = 0; step < size - 1; ++step) {       
    for (int i = 0; i < size - step - 1; ++i) {   
      if (array[i] > array[i + 1]) {  
        // 交换元素,如果当前元素大于下一个元素  
        int temp = array[i];  
        array[i] = array[i + 1];  
        array[i + 1] = temp;  
      }  
    }  
  }  
}  
  
void printArray(int array[], int size) {  
  for (int i = 0; i < size; ++i) {  
    printf("%d  ", array[i]);  
  }  
  printf("\n");  
}  
  
int main() {  
  int data[] = {-2, 45, 0, 11, -9};  
  int size = sizeof(data) / sizeof(data[0]);  
  bubbleSort(data, size);  
  printf("Sorted Array in Ascending Order:\n");  
  printArray(data, size);  
}

优化:

void Bubblesort(int arr[], int n)
{
	for (int i = 0; i < n - 1; i++)
	{
		int nflag = 0;
		for (int j = 0; j < n-i-1; j++)
		{
			if (arr[j] > arr[j+1])
			{
				int temp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = temp;
				nflag = j+1;
			}
		}
		if (nflag == 0)
		{
			break;
		}
		else
		{
			i = n - 1 - nflag;
		}
	}
}


这个程序首先定义了一个冒泡排序函数bubbleSort,这个函数接受一个数组和它的大小作为参数。然后,它使用两个嵌套循环来遍历数组。外层循环控制遍历的次数,内层循环用于比较和交换元素。如果一个元素大于它后面的元素,那么这两个元素就会被交换。这个过程会持续进行,直到整个数组被排序。

printArray函数被用来打印排序后的数组。最后,在main函数中,我们定义了一个需要排序的数组,并计算了它的大小。然后,我们调用bubbleSort函数来排序这个数组,并使用printArray函数来打印排序后的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值