关于C语言用选择法对数组中10个整数按由小到大排序

作者&投稿:江黄 (若有异议请与网页底部的电邮联系)
C语言,用选择法对数组中10个整数按由小到大排序?求解释!!!~

选择排序的思想是:每一趟的排序过程都是在当前位置后面剩下的待排序对象中选出值最小的那个,然后放到当前位置上。
该程序中k的定义主要是为了存放数组中最小数的位置。然后通过t=array[k];array[k]=array[i];array[i]=t;这三条语句,再把这数组中最小的数字放到前面。注意C语言当中的“=”不是等于,只是一种赋值运算。其中if(array[j]<array[k]) k=j;这条语句用来比较当前位置的值和初始值(即array[0]的值)的大小的。注意上述语句中第二个for循环的循环体语句只有一条,即:if(array[j]<array[k]) k=j;自己试着分析一下就明白了。

d=k=i; 不能这样写,要分开来:
k=i;
d=i;

程序是好的。正常运行:

#include<stdio.h>

int main()

{

void sort(int arry[],int n);

int a[10],i;

printf("enter array:
");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

sort(a,10);

printf("the sorted array:
");

for(i=0;i<10;i++)

printf("%d ",a[i]);

printf("
");

return 0;

}


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;

}

}



#include<stdio.h>
int main()
{
void sort(int arry[],int n);
int a[10],i;
printf("enter array:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10);
printf("the sorted array:
");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("
");
return 0;
}


void sort (int array[],int n)
{
int i,j,k,t,d;
for(i=0;i<n-1;i++)
{
d=k=i;


for(j=i+1;j<n;j++)

if(array[j]<array[k])

d=j;


t=array[k];array[k]=array[i];array[i]=t;
}
}

程序23和30你这样子写是不对的你想想程序第28行if(array[j]<array[k]) 这里会在某个时刻拿k作为下标的哦 (在26行每次的循环过程中是需要k的值在改变的而你把j赋值给了d自然不行)这个跟你讲不清楚 总之了解程序的步骤吧  一步步照着程序走一遍 

这个很重要相信我  因为人思考问题有时候一下想好几步  多数都是在这好几步中出错了。(你要做到于程序同步啊)哈哈



如程序所给出的sort函数,k=i是为了设置每次排序的开始,是参照点;j=k呢,就是将此轮比较中最小的个数赋值给数组中的第i个,完成此次选择中最小数的选择。第一次排序从数组中第一个数开始,通过比较,确定最小的数,并通过t=array[k];array[k]=array[i];array[i]=t;
,完成赋值给a[o].以此类推,第二次由数组中第二个数组元素开始,也就是a[1]开始,比较数组中以下元素的大小,选择出余下元素中最小的,赋值给a[1],完成此次选择。以此类推,得到一个完整有序的数组。其中,比较次数分别为n-1,n-2,n-3、、、总次数为(n-1)n/2。你仔细想一下就会出来的。。。:-D

从第i个数开始,比较后面的数,把最小的和第i个交换
当i=0时,交换完成,a[i]就是从第0个开始到最后一个中最小的那个
当i=1时,交换完成,a[i]就是从第1个开始到最后一个中最小的那个
.......
k是最小数的下标,然后a[k]和a[i]的数字交换,a[i]就是最小的了

快排、二叉树 这两个比较难,还可以使用指针定位。

-itjob


C语言,用选择法对数组中10个整数按由小到大排序?求解释!!!
选择排序的思想是:每一趟的排序过程都是在当前位置后面剩下的待排序对象中选出值最小的那个,然后放到当前位置上。该程序中k的定义主要是为了存放数组中最小数的位置。然后通过t=array[k];array[k]=array[i];array[i]=t;这三条语句,再把这数组中最小的数字放到前面。注意C语言当中的“=”不...

C语言采用选择法对数组元素按从大到小的顺序排列
include<stdio.h> define SIZE 10 main(){ int a[SIZE]={3,8,7,6,5,0,1,2,9,4};int max,pos;int i,j;printf("数组中原存放数据是:\\n");for(i=0;i<SIZE;i++)printf("%3d",a[i]);for(i=0;i<SIZE-1;i++){ max=a[i];pos=i;for(j=i+1;j<SIZE;j++)if(a[j]...

c语言编程题:用选择法对数组中15个整数按由小到大排序。
include<stdio.h>#include<stdlib.h>void select_sort(int *a, int n){ int i, j, min, t; for( i =0; i < n -1; i ++){ min = i; \/\/查找最小值 for( j = i +1; j < n; j ++) if( a[min] > a[j])min = j; \/\/交换 if( min !=...

C语言程序 用选择法对十个数排序
include <stdio.h> int main(){int i,j,min,temp,a[11];printf("enter data:\\n");for (i=1;i<=10;i++){printf("a[%d]=",i);scanf("%d",&a[i]);} printf("\\n");printf("The orginal numbers:\\n");for (i=1;i<=10;i++)printf("%5d",a[i]);printf("\\n");for...

用选择法对10个整数排序
用选择法对10个整数排序如下:选择排序的思路:按照升序的排序,设有10个元素,从第一个开始和其余求个进行比较,最小的放在第一个数,再将第二个数和余下8个进行比较,再将最小的放在第二位,一直到排序结束。c语言 C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言...

C语言程序---用简单选择法对10个整数排序
2013-12-16 C语言 怎么样用选择法对10个整数排序? 6 2011-09-06 C语言用选择法对10个整数按从大到小排序。10个整数用sca... 40 2015-01-03 c语言,用选择法对10个整数进行升序排列,新手能看懂的 9 2007-06-24 用选择法对10个整数排序 7 2015-01-14 c语言编程用选择法对10个整数排序 2 20...

...输入一个6个元素的数组,请分别用冒泡法和选择法对数组进行升序排列...
1、新建一个163.php。2、输入php网页的结构(<?php?>)。3、声明PHP与浏览器交互的文件类型和编码。4、使用 array() 函数定义一个$numbers数组。5、使用 sort() 函数对数组 $numbers 中的元素进行排。6、使用 print_r() 函数,输出排序后的数组。7、运行网页,在浏览器中输出排序后的数组。

c语言简单编程,编一个用选择法对N个字符进行排序的函数,从A到Z排序...
define N 26#include <stdio.h>void fun(char str[]);int main(){int i,j;char str[N]; for (i=0;i<N;i++) scanf("%c",&str[i]); fun(str); for (i=0;i<N;i++)\/\/输出也要加循环 printf("%c ",str[i]);}void fun(char str[]){char min;int i,...

C语言编程用选择排序法对五个数由大到小排序
假定5个数在数组a[]中 int a[]={3,5,2,1,4};int i,j,temp;for (i=0; i<4; i++){ for (j=i+1; j<5; j++){ if (a[i]<a[j]){ temp=a[i];a[i]=a[j];a[j]=temp;} } } for (i=0; i<5; i++){ printf("%4d",a[i]);} 运行后输出 5 4 3 2 1 ...

请大家帮我想想,用选择法对10个整数排序(从小到大)。
首先要理解,这里是对a[1]~a[10] 排序,a[0]是一个临时变量,tmp,用来交换 a[i] 和 a[min]。算法对a[1]~a[10]做遍历,选择值最小的标号,保存在 变量min中,(即选择最小)然后 把最小的放在(未排序部分的)前端。

仪陇县15115029568: C语言,用选择法对数组中10个整数按由小到大排序?求解释!!! -
敖颜欧来: 首先以array[0]作为参照,从左到右扫描,找到最小的数据与array[0]位置交换. 接下来以array[1]作为参照,重复上述过程. ... k=i定位参照 k=j找到剩下数组中最小值

仪陇县15115029568: C语言中如何用选择法将10 个整数排序 -
敖颜欧来: #include <stdio.h> void main() { void sort(int arry[],int n);//函数声明 int a[10],i; printf("enter the array:\n"); for(i=0;i<10;i++) //输入十个数 scanf("%d",&a[i]); sort(a,10);//调用排序函数 printf("the sorted array:\n"); for(i=0;i<10;i++) //输出十个...

仪陇县15115029568: C语言 怎么样用选择法对10个整数排序? -
敖颜欧来: 选择法排序是一种简单的容易实现的对数据排序的算法.以整形数组元素为例,有数组A[10],即A[0],A[1],…,A[8],A[9](假设其元素均互不相同).要求对其元素排序使之递增有序.首先以一个元素为基准,从一个方向开始扫描,比如从左至...

仪陇县15115029568: c语用选择法对10个整数进行由小到大排序 -
敖颜欧来: 冒泡排序法1 跟 2 比 2跟3比 ....8根9比 9跟10比 前面的比后面的大就把这两个换一下 做一个 int count 如果一次 1-10冒泡排序 有前面的比后面的大 count=1 最外面做一个 while count=0

仪陇县15115029568: 一个C语言问题:用选择法对数组中十个数由小到大排序 -
敖颜欧来: 必须要k吧.注意到k有两个地方被赋值,k=i和if(array[j]<array[k]) k=j,且if语句是放在for(j=i+1;j<n;j++)之后,说明k是用来存放10个数中最小数的位置,通过下面3句赋值语句把它放在最前,其他的以此类推.选择法效率比较低,使用冒泡法应该更容易理解一些,且效率更高.

仪陇县15115029568: c语言关于用简单选择法对输入的10个整数进行由小到大排列 -
敖颜欧来: 楼主这段代码是这样看得::::for(i=0;i<9;i++){ k=i; for(j=i+1;j<10;j++) /* 循环 注意我打的回车 for 和 if 后面不带 { } 的话 作用范围 只有 后面的一句 */ if(a[j]<a[k]) k=j; if(i!=k){ x=a[i]; /*这三行 是交换 a[i] 和 a[k] 的值 k是中间变量 */ a[i]=a[k]; a[k]=x; } }

仪陇县15115029568: 各位朋友帮我想想: 用选择法对10个整数从小到大排序(C语言中的题),其中的“选择法”是指的是什么?它的 -
敖颜欧来: 选择的要比冒泡的多声明一个.比较的次数是一样的,选择排序每扫描一遍数组;次轻&quot:"&lt:冒泡算法,每次比较如果发现较小的元素在后面,就交换两个相邻的元素.将待排序的元素看作是竖着排列的"的元素就浮到了次高位置,所以...

仪陇县15115029568: C语言用数组,输入十个数,选择法按从小到大排列 -
敖颜欧来: 1,.将第二个for语句中的for(j=0;j<=i;j++) 改为for(j=0;j<10;j++) 2.将for(i=0;i<9;i++)改为for(i=0;i<j;i++) 就可以了. (同为海淀区学生,加油)

仪陇县15115029568: 用选择法对十个数排序(用C语言) -
敖颜欧来: #include <stdio.h> main() { static int temp,a[]={7,5,6,8,9,4,1,0,2,3}; int i,j; for (i=0;i<n;i++) for (j=i+1;j<n;j++) if (a[j]<a[i]) { temp=a[j]; a[j]=a[i]; a[i]=temp; } printf("%d",a[i]); }

仪陇县15115029568: C语言 用选择法对10个整数按从大到小顺序排序 -
敖颜欧来: for(p=a,i=0;i<10;i++) { printf("%d",*p); p++; 少了“}” void sort(int x[],int n); 多了“;”

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网