c语言 指针的方法 对一维数组进行 冒泡排序

2025-04-24 23:02:25
推荐回答(3个)
回答1:

大概思路:用指针p指向数组的首地址,用指针去引用数组中的各个元素,并对数组中各个元素就行运算和比较操作了,代码可以参照如下:

#include
#include

int main()
{
int array[5];
int i,j,*p,temp;
p=array;
printf("please input some integer:\n");
for(i=0;i<5;i++)
{
scanf("%d",p++);
}
p=array;
printf("排序前为:\n");
for(i=0;i<5;i++)
{
printf("%-5d",*p++);
}
p=array;

for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
if(*(p+j)>*(p+j+1)) //用指针去引用数组中的元素并进行比较
{
temp=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=temp;
}
}
}
printf("排序之后:\n");
for(i=0;i<5;i++)
{
printf("%-5d",*p++);
}
return 0;
}

回答2:

这个不难。
#include
#include

int BubbleSort(int *data, const size_t num);
void print_array(const int arr[], const size_t len);

int main(int argc, char *argv[])
{
int values[] = { 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 };
size_t len_array;

len_array = sizeof(values)/sizeof(values[0]);
printf("The array \t: ");
print_array(values, len_array);
BubbleSort(values, len_array);
printf("Bubble Sort \t: ");
print_array(values, len_array);
return 0;
}

int BubbleSort(int *data, const size_t num)
{
int i, j, _temp;
i = num;

while (i > 0)
{
for (j = 0; j < i-1; j++)
{
if (data[j] > data[j+1])
{
_temp = data[j];
data[j] = data[j+1];
data[j+1] = _temp;
}
}
i--;
}

return 0;
}

void print_array(const int arr[], const size_t len)
{
int i;

for (i = 0; i < len; i++)
printf("%d ", arr[i]);

printf("\n");

}
输入: 9 8 7 6 5 4 3 2 1
输出: 1 2 3 4 5 6 7 8 9

回答3:

//纯指针打造
void sortMP(int *arr,int n)
{
//n为数组长度
int i,j,temp;
for(i=0;i {
for(j=0;j {
if(*(arr+j)>*(arr+j+1))
{
temp=*(arr+j);
*(arr+j)=*(arr+j+1);
*(arr+j+1)=temp;
}
}
}
}