私信TA

用户名:chenqi

访问量:33881

签 名:

等  级
排  名 356
经  验 5107
参赛次数 0
文章发表 52
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

#include<stdio.h>

#define SWAP(x,y) {int t;t=x;x=y;y=t;}

//选择排序法:
/*
将要排序的对象最为两部分,一部分是已排序的,一部分是未排序的;
每次从未排序的部分中找出最小值,放入已排序的后面
*/

int *SelectionSort(int *p,int num)
{
    int i,j,index_min,temp;
     
    for(i=0;i<num-1;i++)
    {
        index_min = i;   
        for(j=i+1;j<num;j++)   //未排序部分中寻找最小值
        {
            if(*(p+j)<*(p+index_min))
            {
                index_min=j;
            }
	}
            if(index_min!=i)
            {
		SWAP(*(p+i),*(p+index_min));
            }
    }
        return p;
}

//插入排序法:
/*将对象分为两堆,每次取后面一堆中最靠前的元素插入到前面的合适位置*/
int *InsertionSort(int *p,int num)
{
	int i,j,k,temp=0;
	for(i=1;i<num;i++)
	{
		temp = *(p+i);//依次取后面最靠前的数据
		j = i-1;
		while(temp<*(p+j))//注意体会次循环的巧妙
		{
			*(p+j+1) = *(p+j);
			j--;
			if(-1 == j)
				break;
		}
		*(p+j+1) = temp;
	}
	return p;
}

//冒泡排序法:
/*一次循环比较相邻元素*/
int *BubbleSort(int *p,int num)
{
	int i,j,temp;
	temp = p[0];
	for(i=0;i<num-1;i++)
	{
		for(j=0;j<num;j++)
		{
			if(p[j]<p[j+1])
			{
				SWAP(p[j+1],p[j]);
			}
		}
	}
		return p;
}
	
int main()
{
	int i,num[10]={3,45,67,1,2,0,35,70,21,10},*ptr;
	int length =10;
//	ptr = SelectionSort(num,length);
//	ptr = InsertionSort(num,length);
	ptr = BubbleSort(num,length);
	for(i=0;i<length;i++)
	{
		printf("%d ",*(ptr+i));
	}
	return 0;
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区