
编写一个程序,用选择法对数组a[]={20,10,55,40,30,70,60,80,90,100}进行从大到小的排序 10
3个回答
展开全部
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);
}
}
展开全部
#include"stdio.h"
void main(){
int a[]={20,10,55,40,30,70,60,80,90,100},i,j;
for(i=0;i<10;i++){
if(a[i]<a[i+1]){
j=a[i+1];
a[i+1]=a[i];
a[i]=j;
}
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
void main(){
int a[]={20,10,55,40,30,70,60,80,90,100},i,j;
for(i=0;i<10;i++){
if(a[i]<a[i+1]){
j=a[i+1];
a[i+1]=a[i];
a[i]=j;
}
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
参考资料: C语言程序设计 谭浩强
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void sort(int array[],int n)
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]>array[k])k=j;
t=array[k];array[k]=array[i];array[i]=t;}
}
void main(){
int i;
int a[]={20,10,55,40,30,70,60,80,90,100};
sort(a,10);
for(i=0;i<10;i++){
printf("%d\n",a[i]);
}
}
{int i,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]>array[k])k=j;
t=array[k];array[k]=array[i];array[i]=t;}
}
void main(){
int i;
int a[]={20,10,55,40,30,70,60,80,90,100};
sort(a,10);
for(i=0;i<10;i++){
printf("%d\n",a[i]);
}
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询