冒泡排序——用指针实现
Posted 计算机学习之家
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序——用指针实现相关的知识,希望对你有一定的参考价值。
每日坚持编程,每天都能收获新的知识
C语言基础编程习题讲解——利用指针对数组进行排序插入操作
指针应用内容回归啦!
大家现在学习C语言的内容应该学习到了指针部分了吧,现在小编就以一道经典的指针题给大家复习一下前面所学习过的内容。
题目:
编写程序,输入10个整数到一数组,使用指针方法对数组元素排序。再读入一个任意整数并将其插入到这个已排序的整数数组中,插入后数组中的数仍然保持有序。
如何对数组实现排序?
答案是使用冒泡排序!我们已经在之前的文章中对这部分内容有所提及,那么我们今天就先来讲讲如何用指针实现数组的冒泡排序。
原理还是类似的:
void fun(int *arr, int sz)
{ int i;
int j;
int tmp;
for (i = 0; i < sz; i++)
{
for (j = 0; j < sz - 1 - i; j++)
{
if (*(arr + j) < *(arr + j + 1))
{ tmp = *(arr + j);
*(arr + j) = *(arr + j + 1);
*(arr + j + 1) = tmp;
}
}
}
}
而在这道题中,我们要求是先讲数组中10个元素进行排序再向其中插入一个数字进行排序,因此我们定义的数组长度便是11。我们再通过定义指向数组的指针p。而具体插入思维在后面数据结构内容会讲述,这里就不做分析,我们今天的任务就是了解如何用指针排序。
小编解题代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[11],temp,insert_num;
int *p,i,j;
for(p = a;p<(a+10);p++)
scanf("%d",p);
p =a;
for(i=0;i<10;i++)
{
p = a;
for(j=0;j<10-i-1;j++)
{
if(*p>*(p+1))
{
temp = *p;
*p = *(p+1);
*(p+1) = temp;
}
p++;
}
}
scanf("%d",&insert_num);
*(a+10) = insert_num;
for(i=0;i<11;i++)
for(j=0;j<10-i;j++)
{
if(*p>*(p+1))
{
temp = *p;
*p = *(p+1);
*(p+1) = temp;
}
p++;
}
for(p = a;p<(a+11);p++)
{
printf("%d ",*p);
}
return 0;
}
总结
对数组进行排序的方法还有许多,冒泡排序是其中之一,常见的使用方法有三种:数组、函数和指针。总体来说,数组的应用还是过于死板,我们将在后面文章中发布关于动态内存分配的方式和原理。
PS:微信添加“小南教育”获取实惠划算的二级资料
以上是关于冒泡排序——用指针实现的主要内容,如果未能解决你的问题,请参考以下文章