|
|
|
|
@ -0,0 +1,66 @@
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
void BubbleSort(int n, int a[])
|
|
|
|
|
{
|
|
|
|
|
int i, j, temp, exchange = 1, count = 0;
|
|
|
|
|
for(i = 0; i < n-1 && (exchange == 1); i ++)
|
|
|
|
|
/*判断上一趟是否有数据交换,没有则表明排序已完成 */
|
|
|
|
|
for(j = 0, exchange = 0; j < n - 1 - i; j ++, count ++)
|
|
|
|
|
{
|
|
|
|
|
if(a[j] > a[j + 1])
|
|
|
|
|
{
|
|
|
|
|
exchange = 1;
|
|
|
|
|
temp = a[j];
|
|
|
|
|
a[j] = a[j + 1];
|
|
|
|
|
a[j + 1] = temp;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int n, a[1000];
|
|
|
|
|
int i, j, temp;
|
|
|
|
|
printf("请输入待排序个数:\n");
|
|
|
|
|
scanf("%d", &n);
|
|
|
|
|
for(i = 0; i < n; i ++)
|
|
|
|
|
scanf("%d", &a[i]);
|
|
|
|
|
BubbleSort(n, a);
|
|
|
|
|
printf("排序过后的数顺序:\n");
|
|
|
|
|
for(i = 0; i < n - 1; i++)
|
|
|
|
|
printf("%d ", a[i]);
|
|
|
|
|
printf("%d", a[n - 1]);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
#include<stdio.h>
|
|
|
|
|
void BubbleSort(int n, int a[])
|
|
|
|
|
{
|
|
|
|
|
int i, j, temp, pos, count = 0;
|
|
|
|
|
for(i = 0; i < n - 1; i = n - pos)
|
|
|
|
|
/*n-pos表示已经排好序的个数,用来替代以前的i++
|
|
|
|
|
方式计算已经排好序的个数*/
|
|
|
|
|
for(j = 0, pos = 0; j < n - 1 - i; j ++, count ++)
|
|
|
|
|
/*pos=0是必须的,不然没有交换的时候会出现死循环*/
|
|
|
|
|
{
|
|
|
|
|
if(a[j] > a[j + 1])
|
|
|
|
|
{
|
|
|
|
|
temp = a[j];
|
|
|
|
|
a[j] = a[j + 1];
|
|
|
|
|
a[j + 1] = temp;
|
|
|
|
|
pos = j + 1; /*从j+1开始的往后的数据已经排好序*/
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
int main()
|
|
|
|
|
{
|
|
|
|
|
int n, a[1000];
|
|
|
|
|
int i, j, temp;
|
|
|
|
|
printf("请输入待排序个数:\n");
|
|
|
|
|
scanf("%d", &n);
|
|
|
|
|
for(i = 0; i < n; i ++)
|
|
|
|
|
scanf("%d", &a[i]);
|
|
|
|
|
BubbleSort(n, a);
|
|
|
|
|
printf("排序过后的数顺序:\n");
|
|
|
|
|
for(i = 0; i < n - 1; i++)
|
|
|
|
|
printf("%d ", a[i]);
|
|
|
|
|
printf("%d", a[n - 1]);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|