- 首先,把10个数里最小的个数放到下标为0的位置上(str[0])
- 通过将下标为0的数(str[0])与剩下其余9个数进行对比交换(将较少者放置在下标为0的位置上),就可以得到这10个数最小的那个
- 10个数最小的那位确定后,接下来就要找剩下9个数最小的那个。
- 因为已经确定出一个最小的数,所以就不要动str[0],直接从str[1]开始,与剩下的8个数对比交换,找出9个数中最小的那位放到下标为1(str[1])的位置上
- 继续按照这个思路就可以将这十个数变成有序的(从小到大)的数组
冒泡排序1
#include <stdio.h>
void swap(int *a, int *b); //交换两个数
int main()
{
int str[10];
int i, j;
//初始化数组为10 9 8 7 6 5 4 3 2 1
for (i = 0; i < 10; i++)
{
str[i] = 10 - i;
}
//排序,从a[0]开始排,从小到大
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10; j++)
{
if (str[i] > str[j])
{
swap(&str[i], &str[j]);
}
}
}
//将十个数输出
for (i = 0; i < 10; i++) printf("%d
", str[i]);
return 0;
}
void swap(int *a, int *b)
{
int c;
c = *a; *a = *b; *b = c;
}
冒泡排序2
void BubbleSort3(int a[], int n)
{
int j, k;
int flag;
flag = n;
while (flag > 0)
{
k = flag;
flag = 0;
for (j = 1; j < k; j++)
if (a[j - 1] > a[j])
{
Swap(a[j - 1], a[j]);
flag = j;
}
}
}
冒泡排序3
void BubbleSort2(int a[], int n)
{
int j, k;
bool flag;
k = n;
flag = true;
while (flag)
{
flag = false;
for (j = 1; j < k; j++)
if (a[j - 1] > a[j])
{
Swap(a[j - 1], a[j]);
flag = true;
}
k--;
}
}
冒泡排序4
void BubbleSort1(int a[], int n)
{
int i, j;
for (i = 0; i < n; i++)
for (j = 1; j < n - i; j++)
if (a[j - 1] > a[j])
Swap(a[j - 1], a[j]);
}