这个起泡法不太理解,而且有一点不会敲程序,希望有人可以帮忙敲程序,让我比对一下,谢谢啦.
冒泡排序示例:
#include<stdio.h>
// 从后往前冒泡
void sort(int a[],int n)
{
int i,j,t,noswap;
for(i=0;i< n-1; i++)
{
noswap=1;
for(j=n-1;j>i;j--)
if(a[j-1]>a[j])
{
t=a[j-1];
a[j-1]=a[j];
a[j]=t;
noswap=0;
}
if(noswap)
break;
}
}
// 从前往后冒泡
void sort1(int a[],int n)
{
int i,j,t,noswap;
for(i=0;i< n-1; i++)
{
noswap=1;
for(j=0;j<n-1-i;j++)
if(a[j+1]<a[j])
{
t=a[j+1];
a[j+1]=a[j];
a[j]=t;
noswap=0;
}
if(noswap)
break;
}
}
int main()
{
int n;
printf("Input n:");
scanf("%d", &n);
printf("Input %d numbers:", n);
int a[n];
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
sort1(a, n);
printf("Sorting results:");
for (int i = 0; i < n; i++)
{
printf("%d ", a[i]);
}
return 0;
}
参考,需要自定义数组的话你自己修改下;
#include <stdio.h>
int main() {
int arr[10] = {6, 2, 8, 1, 5, 9, 3, 7, 4, 0};
// 冒泡排序
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9 - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 输出排序结果
printf("排序后的数组:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
注:本文以一个例子来演示广义表的基本操作,含有一个头文件《GList.h》和一个测试源文件《main.cpp》