使用指针对数组进行排序

使用指针对数组a使用未优化的选择法从大到小排序。要求:采用函数形式为int a [6]=8,5,7,9,4,6

冒泡排序法算未优化的选择法么?

void bubbleSort(int *p, int len)
{
	int i, j,t;

	for (i = 0; i < len - 1; i++) {
		for (j = 0; j < len - 1 - i; j++) {
			if (*(p+j) > *(p+j+1) )
			{
				t = *(p + j);
				*(p + j) = *(p + j + 1);
				*(p + j + 1) = t;
			}
		}
	}
}

int main()
{
	int a[6] = { 8,5,7,9,4,6 };
	bubbleSort(a, 6);
	for (int i = 0; i < 6; i++)
		printf("%d ", *(a + i));

	return 0;
}

 

void sort(int* p,int lenth)
{
 int temp;
 //用指针对数组进行从小到大的排序
 for (int i=0;i<lenth;i++)
 {
     for(int j=i;j<lenth;j++)
   {
 if (*(p+i)>*(p+j+1))
 {
 temp=*(p+j+1);
 *(p+j+1)=*(p+i);
 *(p+i)=temp;
 }
   }
 }
 for (int k=0;k<lenth;k++)
 {
 printf("%d ",*(p+k));
 }
}
void main()
{
 int arr[10]={4,2,8,11,3,6,9,33,23,15};  
 sort(arr,sizeof(arr)/sizeof(arr[0]));
}

 


#include<stdio.h>
void select_sort(int *a,int n)
{
	int i,j;
	for(i = 0;i<n-1;i++)
	{
		for(j = i+1;j < n;j++)
		{
			if(*(a+i)>*(a+j))
			{
				int temp;
				temp = *(a+i);
				*(a+i) = *(a+j);
				*(a+j) = temp;
			}
		}
	}
/*	for(i = 0;i < n;i++)
	{
		printf("%d\t",*(a+i));
	}
*/
}
void print(int *a,int n)
{
	int i;
	for(i = 0;i < n;i++)
	{
		printf("%d\t",*(a+i));
	}
	printf("\n");
}
int main()
{
	int a[5];
	int i;
	for(i = 0;i < 5;i++)
	{
		scanf("%d",&a[i]);
	}
	select_sort(a,5);
	print(a,5);
	return 0;
}

选择排序指针法

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^