Add 加标志性变量

master
pql5ifepn 4 years ago
parent 3a4c320016
commit ff95c3f8c4

@ -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;
}
Loading…
Cancel
Save