编写一个程序用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行由大到小的排序?
编写一个程序用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行由大到小的排序?可以写出它的流程图吗?回答详细问题只写流程图即可,谢...
编写一个程序用选择法对数组a[]={20,10,50,40,30,70,60,80,90,100}进行由大到小的排序?可以写出它的流程图吗?
回答详细问题
只写流程图即可,谢谢。
java 展开
回答详细问题
只写流程图即可,谢谢。
java 展开
4个回答
展开全部
选择法就是按每一位应该是什么就是什么。
语言不是问题!
流程图我就用文字画,你自己图形化吧。
大概就是
1、初始化i=0;
2、判断i<n,是至3,否至6;
3、判断a[i]是不是在i-n-1中最大的?是,走5,不是走4
4、往后比较,与最大的进行交换,使得a[i]是在i-n中最大;
5、i++,调至2;
6、结束,输出结果。
参考代码:
import java.util.Scanner;
public class Main
{
private Scanner in = new Scanner(System.in);
private int n, a[];
private void input(){
n = in.nextInt();//输入数组个数
a=new int [n];
for(int i=0;i<n;i++){
a[i]=in.nextInt();
}
}
private void sort(){
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;//假设x[i]最大,记为x[k]
for(j=i+1;j<n;j++){
if(a[k]<a[j])//如果有比x[k]大的数,记该数为最大的数x[k]
k=j;
}
if(k!=i)//一轮比完后,若x[k]发生了变化,说明有比x[i]大的数在后面。
{
t=a[i];
a[i]=a[k];
a[k]=t;//交换x[i]后面所有数中最大的那个,使x[i]是其后所有元素中最大的。
}
}
}
private void printa(){
for(int i=0;i<n;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
public static void main(String[] args)
{
Main a = new Main();
a.input();
a.sort();
a.printa();
}
}
语言不是问题!
流程图我就用文字画,你自己图形化吧。
大概就是
1、初始化i=0;
2、判断i<n,是至3,否至6;
3、判断a[i]是不是在i-n-1中最大的?是,走5,不是走4
4、往后比较,与最大的进行交换,使得a[i]是在i-n中最大;
5、i++,调至2;
6、结束,输出结果。
参考代码:
import java.util.Scanner;
public class Main
{
private Scanner in = new Scanner(System.in);
private int n, a[];
private void input(){
n = in.nextInt();//输入数组个数
a=new int [n];
for(int i=0;i<n;i++){
a[i]=in.nextInt();
}
}
private void sort(){
int i,j,k,t;
for(i=0;i<n-1;i++)
{
k=i;//假设x[i]最大,记为x[k]
for(j=i+1;j<n;j++){
if(a[k]<a[j])//如果有比x[k]大的数,记该数为最大的数x[k]
k=j;
}
if(k!=i)//一轮比完后,若x[k]发生了变化,说明有比x[i]大的数在后面。
{
t=a[i];
a[i]=a[k];
a[k]=t;//交换x[i]后面所有数中最大的那个,使x[i]是其后所有元素中最大的。
}
}
}
private void printa(){
for(int i=0;i<n;i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
public static void main(String[] args)
{
Main a = new Main();
a.input();
a.sort();
a.printa();
}
}
展开全部
可以用 浮点发 冒泡法 还可以用一些函数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
...
For i = 1 To 10
For j = i To 10
If a(i) > a( j) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
....
Next i
For i = 1 To 10
For j = i To 10
If a(i) > a( j) Then
temp = a(i)
a(i) = a(j)
a(j) = temp
End If
Next j
....
Next i
参考资料: http://baike.baidu.com/view/1272530.htm
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public class wan {
/**
* @param args
*/
public static void main(String[] args) {
/*选择排序
思路:
1.定义一个循环,控制要排列的次数,每次搞定一个最大数
假设用i来代表每次最大数摆放的位置,i的取值:0~length-2
2.定义一个变量pos记住最大数所在的位置,定义一个变量max记住最大数
max初始值为i位置的元素,pos初始值为i
3.定义一个内层循环,用于遍历数组找最大数
假设i位置的最大,找出i+1~length-1里面最大的比i还大的
遍历数组,如果有比max大的,将值给max,同时用pos记住该元素的角标
4.让最大数和i位置的元素交换
*/
int[] arr = {20,10,55,40,30,70,60,80,90,100};
System.out.println("排序前:");
listArr(arr);
System.out.println("排序后:");
sort(arr);
listArr(arr);
}
private static void sort(int[] arr) {
for(int i=0; i<arr.length-1; i++){
int pos = i;
int max = arr[i];
for(int j=i+1; j<arr.length; j++){
if(arr[j]>max)
{
max = arr[j];
pos = j;
}
}
exchange(arr, i, pos);
}
}
private static void exchange(int[] arr, int pos1, int pos2) {
int temp = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = temp;
}
static void listArr(int[] arr){
StringBuffer sb = new StringBuffer();
for(int i=0; i<arr.length; i++)
sb.append(arr[i] + ",");
sb.delete(sb.length()-1, sb.length());
System.out.println(sb);
}
}
/**
* @param args
*/
public static void main(String[] args) {
/*选择排序
思路:
1.定义一个循环,控制要排列的次数,每次搞定一个最大数
假设用i来代表每次最大数摆放的位置,i的取值:0~length-2
2.定义一个变量pos记住最大数所在的位置,定义一个变量max记住最大数
max初始值为i位置的元素,pos初始值为i
3.定义一个内层循环,用于遍历数组找最大数
假设i位置的最大,找出i+1~length-1里面最大的比i还大的
遍历数组,如果有比max大的,将值给max,同时用pos记住该元素的角标
4.让最大数和i位置的元素交换
*/
int[] arr = {20,10,55,40,30,70,60,80,90,100};
System.out.println("排序前:");
listArr(arr);
System.out.println("排序后:");
sort(arr);
listArr(arr);
}
private static void sort(int[] arr) {
for(int i=0; i<arr.length-1; i++){
int pos = i;
int max = arr[i];
for(int j=i+1; j<arr.length; j++){
if(arr[j]>max)
{
max = arr[j];
pos = j;
}
}
exchange(arr, i, pos);
}
}
private static void exchange(int[] arr, int pos1, int pos2) {
int temp = arr[pos1];
arr[pos1] = arr[pos2];
arr[pos2] = temp;
}
static void listArr(int[] arr){
StringBuffer sb = new StringBuffer();
for(int i=0; i<arr.length; i++)
sb.append(arr[i] + ",");
sb.delete(sb.length()-1, sb.length());
System.out.println(sb);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询