大概思路:用指针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;
}
这个不难。
#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
//纯指针打造
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;
}
}
}
}