C语言一维数组冒泡排序
时间: 2023-11-23 13:57:39 浏览: 116
C语言一维数组冒泡排序可以通过比较相邻的元素,将较大的元素交换到右侧,从而实现排序。以下是两种不同的实现方法:
方法一:普通冒泡排序
```c
#include <stdio.h>
void main(){
int a[10],i,j,max;
for(i=0;i<10;i++){
printf("请输入%d个数字:",i+1);
scanf("%d",&a[i]);
}
for(i=0;i<10-1;i++){
for(j=0;j<10-1-i;j++){
if(a[j]>a[j+1]){
max=a[j];
a[j]=a[j+1];
a[j+1]=max;
}
}
}
printf("冒泡排序后的顺序为:");
for(i=0; i<10; i++){
printf("%d ",a[i]);
}
}
```
方法二:指针冒泡排序
```c
#include <stdio.h>
void sort(int *p){
int i,j,max;
for(i=0;i<10-1;i++){
for(j=0;j<10-1-i;j++){
if(p[j]>p[j+1]){
max=p[j];
p[j]=p[j+1];
p[j+1]=max;
}
/*等同于:
if(*(p+j)>*(p+j+1)){
max=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=max;
}
*/
}
}
}
void main(){
int *p,a[10],i,j;
p = a;
for(i=0;i<10;i++){
printf("请输入%d个数字:",i+1);
scanf("%d",p+i);
}
sort(p);
printf("冒泡排序后的顺序为:\n");
for(i=0; i<10; i++){
printf("%d ",*(p+i)); // 等同于 *(p++)
}
}
```
阅读全文