1.使用指针实现冒泡
#include <stdio.h>
void Bubble(int* p, int n)
{
for (int i = 0; i < n - 1; i++)//冒泡排序
{
int cnt = 0;
for (int j = 0; j < n - i - 1; j++)
{
if (*(p + j) > *(p + j + 1))
{
int temp = *(p + j);
*(p + j) = *(p + j + 1);
*(p + j + 1) = temp;
cnt++;
}
}
if (!cnt)
break;
}
}
int main(void)
{
//使用指针实现冒泡
int arr[5] = { 6,7,4,3,9 };
int lenth = sizeof(arr) / sizeof(arr[0]);
Bubble(arr, lenth);
printf("排序后:\n");
for (int i = 0; i < lenth; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
2.使用选择排序实现
#include <stdio.h>
void simple_sort(int* p, int n)
{
int t = 0;
for (int i = 0; i < n - 1; i++)
{
t = i;//定义第一个元素为最值
for (int j = i + 1; j < n; j++)
{
if (*(p + t) < *(p + j))
{
t = j;
}
}
if (t != i)//表示最大值下标与当前下标相等,则不需要互换
{
int temp = *(p + i);
*(p + i) = *(p + t);
*(p + t) = temp;
}
}
}
int main(void)
{
//使用选择排序实现
int arr[5] = { 6,7,4,3,9 };
int lenth = sizeof(arr) / sizeof(arr[0]);
simple_sort(arr, lenth);
printf("排序后:\n");
for (int i = 0; i < lenth; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
3.使用指针实现字符串比较
#include <stdio.h>
int my_strcmp(char* p1, char* p2)
{
int ret = 0;
while (((ret = *p1 - *p2) == 0) && *p2)
++p1,++p2;
return (-ret < 0) - (ret < 0);
}
int main(void)
{
//字符串比较
char str1[20] = "asdf";
char str2[20] = "asdfdf";
int n = my_strcmp(str1, str2);
printf("%d\n", n);
/*
returns - 1 if str1 < str2
returns 0 if str1 == str2
returns + 1 if str1 > str2
*/
return 0;
}
4.使用指针实现字符串拷贝
#include <stdio.h>
void my_strcpy(char* p1, char* p2)
{
while (*p1++ = *p2++)
{
;
}
}
int main(void)
{
//使用指针实现字符串拷贝
char str1[] = "asd";
char str2[] = "hk";
my_strcpy(str1, str2);
printf("%s\n", str1);
return 0;
}