选择法排序与冒泡排序分而治之

选择法排序

先找出一组数中的最大值

#include <stdio.h>
void main()
{
	int a[10]={34,56,27,87,65,92,-3,76,21,99};
	int max;
	int i,t;
	for(i=0;i<10;i++)
	{
		max=a[0];
		for(i=0;i<10;i++)
		{
			if(a[i]>max)
	    {
	    	max=a[i];
		}
		}
	}
	printf("%d",max);
}

将最大值放到初始位置

逐渐找出10个数,9个数,8个数——中的最大值,并将其放在剩余数组第一位

#include <stdio.h>

// 选择排序函数
void selectionSort(int arr[], int n) {
    int i, j, minIndex, temp;
    
    // 外层循环:控制排序趟数 (共 n-1 趟)
    for (i = 0; i < n - 1; i++) {
        // 假设当前起始点 i 是最小值的下标
        minIndex = i;
        
        // 内层循环:在未排序部分中找到最小值的下标
        for (j = i + 1; j < n; j++) {
            if (arr[j] < arr[minIndex]) {
                minIndex = j; // 更新最小值的下标
            }
        }
        
        // 将找到的最小值与当前起始点交换
        if (minIndex != i) {
            temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
    }
}

int main() {
    int arr[100], n, i;
    
    // 输入数组大小
    printf("请输入数组元素个数: ");
    scanf("%d", &n);
    
    // 输入数组元素
    printf("请输入 %d 个整数:\n", n);
    for (i = 0; i < n; i++) {
        scanf("%d", &arr[i]);
    }
    
    // 调用选择排序函数
    selectionSort(arr, n);
    
    // 输出排序结果
    printf("排序后的数组为:\n");
    for (i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    return 0;
}

#include <stdio.h>
int main()
{
	int n,i;
	int a[10];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	int j,max_j,t;
	for(i=0;i<n;i++)
	{
		max_j=i;
		for(j=i;j<n;j++)
		{
			if(a[j]>a[max_j])
			{
				max_j=j;
			}
		}
		
			t=a[i];
		    a[i]=a[max_j];
		    a[max_j]=t;
		
	}
	printf("%d",a[0]);
	for(i=1;i<n;i++)
	{
		printf(" %d",a[i]);
	}
	return 0;
}

小作业小作业 文章被收录于专栏

小作业,姑且叫做操作步骤超过5步的作业吧

全部评论

相关推荐

今天在学习xray安全测试(xray真的很强大)的时候突然想起长亭还有一个offer在审批截止7月24日我的长亭科技测试实习生offer审批已87天4月28日下午hr添加微信通知面试通过4月29日hr微信要学生证照片进行offer审批,hr原话(直接复制自微信):“同学你把学生证发我一下哈,今天帮你提&nbsp;offer,咱们速速走完争取节前能批下来”距今已87天整不发泄情绪,只陈述事实,这家公司招聘工作的质量如何,牛友们评价4月25日一面和面试官聊的不错,当即决定帮我推动二面,当日下午收到二面约面邮件4月27日二面面试官态度也十分和蔼,相谈甚欢,当时下午约hr面4月28日hr面问了几个问题,十分钟结束,当日下午添加hr微信,口头oc4月29日hr微信要去学生证用于offer审批,并告知争取五一前发offer4月30日询问hr&nbsp;offer是否能节前发下,hr告知审批到人力总监5月7日询问hr审批流程,hr告知5月12日入职,人力总监出差,在12日前offer可以发下来5月12日已到入职期,询问审批情况,hr告知再去催促,晚上又告知入职时间调整后延5月14日询问审批情况,告知我等offer审批下来再租房此时已有几个同一时间面试的其他岗位牛友顺利收到offer,遂郑重告知hr不可能无限期等待,请给出确定日期另一位男性hr在当日下午电话联系,表示offer还在催促,如果等的太久了可以看看其他机会,但我明确表示会等待,希望给我发offer5月16日晚上hr电话沟通(应该是hr私人电话),告知我截止周末offer还没审批,建议我看看其他机会,我明确表示想入职长亭科技,hr也答应会一直跟进审批,不取消流程5月30日拜托万能的牛友帮我询问审批情况,被告知还在流程中此后再无音讯。。。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务