利用选择法,描述将10个数按从大到小顺序排列的基本思路与算法流程

 我来答
莫道無情
2019-06-17 · TA获得超过1.5万个赞
知道答主
回答量:317
采纳率:100%
帮助的人:8.6万
展开全部

选择排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)个记录中选取关键字最大的记录作为有序序列中第i个记录。基于此思想的算法主要有简单选择排序、树型选择排序和堆排序。

java选择排序法代码

import java.util.Random;

public class ArrayDemo {    

public static void main(String[] args) {    

Random random=new Random();    

int[] pData=new int[10];   

for(int i=0;i<pData.length;i++){ //随机生成10个排序数

Integer a =random.nextInt(100);        

pData[i]= a;        

System.out.print(pData[i]+" ");   

}    

System.out.println();    

pData=Choose(pData);    

for(int i=0;i<pData.length;i++){        

System.out.print(pData[i]+" ");    

}    

System.out.println();

}

public static int[] Choose(int[] pData){    

System.out.println();    

int k;    

for (int i = 0; i < pData.length; i++) {        

k = i;        

for (int j = i; j < pData.length; j++) {            

if(pData[j]<pData[k]){k = j;}        

}        

int a=pData[i];       

pData[i]=pData[k];        

pData[k]=a;    

}    

return pData;

}

}

扩展资料:

其他排序方法:

简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;

以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕。

以下为简单选择排序的存储状态,其中大括号内为无序区,大括号外为有序序列:

初始序列:{49 27 65 97 76 12 38}
第1趟:12与49交换:12{27 65 97 76 49 38}
第2趟:27不动 :12 27{65 97 76 49 38}
第3趟:65与38交换:12 27 38{97 76 49 65}
第4趟:97与49交换:12 27 38 49{76 97 65}
第5趟:76与65交换:12 27 38 49 65{97 76}
第6趟:97与76交换:12 27 38 49 65 76 97 完成

参考资料:百度百科-选择排序法

康骊烃Rl
2017-09-01 · TA获得超过1154个赞
知道小有建树答主
回答量:958
采纳率:83%
帮助的人:428万
展开全部
//冒泡法排序
#include "stdio.h"
#define N 10
main()
{
int a[N];
int i,j,temp;
for(i=0;i<N;i++)
scanf("%d",a[i]);
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
if(a[j]<a[j+1])
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
printf("\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
}

/*选择排序*/
#include "stdio.h"
#define N 10
main()
{
int a[N];
int i,j,p,temp;

for(i=0;i<N;i++)
scanf("%d",a[i]);

for(i=0;i<N-1;i++)
{
p=i;
for(j=i+1;j<N;j++)
if(a[j]<a[p]) p=j;
temp=a[i];a[i]=a[p];a[p]=temp;
}
printf("\n");
for(i=0;i<N;i++)
printf("%d ",a[i]);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式