1,使用指针实现冒泡
void Bubble(int *p,int n)
思路:先使用数组的方式实现冒泡
提醒:arr[j] ===> *(arr+j) arr[j+1] =====> *(arr+j+1)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Max(int *a,int m)
{
int i=0,j=0;
for(i=0;i<m-1;i++){
int count=0;
for(j=0;j<m-i-1;j++){
if(*(a+j)<*(a+j+1)){
int t =*(a+j);
*(a+j)=*(a+j+1);
*(a+j+1)=t;
count++;
}
}
if(count==0)
break;
}
for(i=0;i<m;i++)
printf("%d",*(a+i));
}
int main(int argc, const char *argv[])
{
int i=0,j=0,m=0;
printf("m=\n");
scanf("%d",&m);
int a[m];
for(i=0;i<m;i++){
scanf("%d",&a[i]);
}
Max(a,m);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/6019a0024f42301d03d06749e6f8c207.png)
2,使用选择排序实现
void simple_sort(int *p,int n)
提醒:arr[max] ====> *(arr+max)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Simple_sort(int *a,int m)
{
int i=0,j=0,t,max;
for(i=0;i<m-1;i++){
max=i;
for(j=i+1;j<m;j++){
if(*(a+max)<*(a+j))
max=j;
}
if(max!=i){
t=*(a+max);
*(a+max)=*(a+i);
*(a+i)=t;
}
}
for(i=0;i<m;i++)
printf("%d ",*(a+i));
printf("\n");
}
int main(int argc, const char *argv[])
{
int i=0,j=0,m=0;
printf("m=\n");
scanf("%d",&m);
int a[m];
for(i=0;i<m;i++)
scanf("%d",&a[i]);
Simple_sort(a, m);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/acd14d62d191fb9e1ed7e9a5010daca6.png)
3,使用指针实现字符串比较
int my_strcmp(char *s1, char *s2)
提醒:*(s1+i)==*(s2+i)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int My_strcmp(char *s1, char *s2)
{
int i=0,j=0;
while(*(s1+i)==*(s2+i)){
if(*(s1+i)=='\0')
break;
i++;
j++;
}
int dev=*(s1+i)-*(s2+i);
return dev;
}
int main(int argc, const char *argv[])
{
int m,n;
printf("m=,n=");
scanf("%d%d",&m,&n);
char s1[m],s2[n];
printf("s1,s2");
scanf("%s %s",s1,s2);
int dev=My_strcmp(s1,s2);
if(dev >0)
printf("str1>str2");
else if(dev<0)
printf("str1<str2");
else
printf("str1=str2");
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/419d92b98de3c20ab76b8c3823c281c7.png)
4,使用指针实现字符串拷贝
void my_strcpy(char *s1,char *s2)
提醒:*(s1+i)=*(s2+i)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void My_strcpy(char *s1,char *s2)
{
int i=0;
for(i=0;*(s2+i)!='\0';i++){
*(s1+i)=*(s2+i);
}
*(s1+i)='\0';
puts(s1);
}
int main(int argc, const char *argv[])
{
int m,n;
printf("m=,n=");
scanf("%d%d",&m,&n);
char s1[m],s2[n];
printf("s1,s2");
scanf("%s %s",s1,s2);
My_strcpy(s1,s2);
return 0;
}
![](https://i-blog.csdnimg.cn/blog_migrate/f77915d9ac3e8bbcac37a323e11c788e.png)