以下是本人个人理解,如果有理解错误的地方或者需要优化的地方,希望大家能给出宝贵的意见!
#include <stdio.h>
#include <windows.h>
void bubbleSort(int arr[], int len)
{
int temp;
int i, j;
for (i = 0; i < len - 1; i++)
{ /* 外循环为排序趟数,len个数进行len-1趟 */
for (j = 0; j<len - 1 - i; j++)
{ /* 内循环为每趟比较的次数,第i趟比较len-i次 */
if (arr[j] > arr[j + 1])
{ /* 相邻元素比较,若逆序则交换(升序为左大于右,降序反之) */
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main()
{
int arr[] = { 3, 5, 1, -7, 4, 9, -6, 8, 10, 4 };
int len = sizeof(arr)/sizeof(arr[0]);
int i;
bubbleSort(arr, len);
for (i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
putchar('\n');
system("pause");
return 0;
}
/* 冒泡排序 /
/ 1. 从当前元素起,向后依次比较每一对相邻元素,若逆序则交换 /
/ 2. 对所有元素均重复以上步骤,直至最后一个元素 /
/ elemType arr[]: 排序目标数组; int len: 元素个数 */