c语言选择排序思路?
c语言选择排序的基本思路是从待排序的区间中经过选择和交换后选出最小的数值存放到一个区间 a[0] 中,再从剩余的未排序区间中经过选择和交换后选出最小的数值存放到另一个区间 a[1] 中,a[1] 中的数字仅大于 a[0],依此类推,即可实现排序。
C语言中选择排序的问题(纠错)
- 求教哪里出了问题
- 不好意思,两年前学的,忘了
关于C语言中选择排序问题
- 12 void sort1(int data[], int count) 13 { 14 int i, j, tmp; 15 16 for (i = 0; i count; i++) { 17 for (j = i + 1; j count; j++) 18 if (data[i] data[j]) { 19 tmp = data[i]; 20 data[i] = data[j]; 21 data[j] = tmp; 22 } 23 print(data, count); 24 } 25 }40 void sort3(int data[], int count) 41 { 42 int i, j, pos, tmp; 43 44 for (i = 0; i count; i++) { 45 pos = i; 46 for (j = i + 1; j count; j++) 47 if (data[j] data[pos]) { 48 pos = j; 49 } 50 if (pos != i) { 51 tmp = data[i]; 52 data[i] = data[pos]; 53 data[pos] = tmp; 54 print(data, count); 55 } 56 } 57 58 }上面这两种排序有什么区别啊??都是选择排序吗
- 第一个 是冒泡排序第二个才是选择排序
c语言的选择排序法 我在devc++里编的。我现在该怎么修改。
- #include "stdio.h" void sort(int a[],int n) {int i,j,k,t; for(i=0;in-1;i++) {k=i; for(i=j+1;jn;j++) if(a[j]a[k]) k=j; t=a[k]; a[k]=a[i]; a[i]=t; } } main() {int a[10],i; printf("please input 10 numbers:n&quo粻钉纲固蕺改告爽梗鲸t;); for(i=0;i10;i++) scanf("%d",&a[i]); printf("the sorted numbers are:n"); sort(int a[10],10); for(i=0;i10;i++) printf("%d ",&a[i]); }最后就说我有错误F:Dev-Cpp源代码选择排序.cppIn function int main():208F:Dev-Cpp源代码选择排序.cpp[Error] expected primary-expression before int
- sort(int a[10],10);改为 sort( a,10);
c语言选择排序
- #includestdio.hvoid sorted(int a[],int n){ 选择法排序 int i,j,k,t; for(i=0;in-1;i++){ k=i; for(j=i+1;jn;j++){ if(a[k]&袱长递短郛的店痊锭花gt;a[j])k=j;} if(k!=i){t=a[k];a[k]=a[i];a[i]=t;}}}int main(){ int n,i,a[255]; printf("请输入数据总量n(1-254):");scanf("%d",&n); printf("请输入%d个数:",n); for(i=0;in;i++)scanf("%d",&a[i]); printf("排序前的数组:"); for(i=0;in;i++)printf("%d ",a[i]);printf("n"); sorted(a,n);printf("排序后的数组:"); for(i=0;in;i++)printf("%d ",a[i]);printf("n"); return 0;}
用C语言实现单向链表的直接插入排序,冒泡排序和选择排序
- 求写程序
- 先把链表的基本操作实现;把排序的算法搞懂;搞不懂了多画画图,就会了
菜鸟求救,c语言求解???选择法从小到大排序
- #include iostreamusing namespace std;int main(){int a[10];int i;void sort(int a[],int n);cout"input 10 numbers:";for(i=0;i10;i++)cina[10];sort(a,10);for(i=0;i10;i++)couta[i] ;coutendl;return 0;}void sort(int a[],int n){int i,j,c;for(i=0;in-1;i++)for(j=i+1;jn;j++){if(a[i]a[j])c=a[i]; a[i]=a[j];a[j]=c;}}
- 你这个是要用C语言的语法来?
c语言的一个和选择排序法有关的问题
- 选择排序法为什么不能直接简化为下面这段程序?for(i=0;in-1,i++){for(j=i+1;jn;j++)if(b[i]b[j]){t=b[i];b[i]=b[j];b[j]=t;}
- 你这个根本就不是选择排序,而是冒泡排序!
C语言选择排序法 问题
- #include "Stdio.h"void main(){ void sa(int array[],int n); int array[10],i; printf("enter the array:n"); for(i=0;i10;i++) scanf("%d",&array[i]); sa(array,10); printf("the sorted array:n"); for(i=0;i10;i++) printf("%dt",array[i]); getch();}void sa(int array[],int n){ int i,j,k,temp; for(i=0;i10;i++) { k=i; for(j=i+1;jn;j++) if(array[j]array[k]) k=j; temp=array[k]; array[k]=array[i]; array[i]=temp; }}以下是我的理解逻辑不知道错在哪里?是变量k的值理解错了吗?请高手详细通俗指点迷津假如array[0]=35,array[1]=8,array[2]=9,array[3]=2,array[4]=-5,array[5]=-1,array[6]=10,array[7]=6,array[8]=62,array[9]=30第一轮比较即执行第一个for循环i=0时第二个for循环的第一次循环情况是此时j=1,k=i=0即if(array[1]array[0])即835 即真则执行k=j;此时k=1,i=0(第一个for循环i=0时)接着交换数组元素即array[0]=8,array[1]=35第二个for循环的第二次循环情况是此时j=2,k=1(没有跳出第二个for循环k的值不会被释放吧?即使释放k的值也不可能为k=i=0?)即if(array[2]array[1])即935 即真则执行k=j;此时k=2,i=0(第一个for循环i=0时)接着交换数组元素即array[0]=9,array[2]=8此时数组元素值已改变即array[0]=9,array[1]=35,array[2]=8,array[3]=2,array[4]=-5,array[5]=-1,array[6]=10,array[7]=6,array[8]=62,array[9]=30 此逻辑推出的结果为:array[0]=-1,array[1]=35,array[2]=8,array[3]=9,array[4]=2,array[5]=-5,array[6]=10,array[7]=6,array[8]=62,array[9]=30array[5]=-5没有排到首位明显出错了
- if(array[j]array[k])k=j; if(k!=j) { temp=array[k]; array[k]=array[i]; array[i]=temp; }个中滋味自己体会
C语言选择排序问题
- #includestdio.h#includemath.h#define M 10void input(float a[]){ int i; for(i=0;iM;i++) scanf("%f",&a[i]);}void change(float a[]){ int i,j,k; float mid,max; for(i=0;iM;i++) { max=a[i]; for(j=i+1;jM;j++) { if(fabs(a[j])fabs(max)) {max=a[j];k=j; } } mid=a[i]; a[i]=max; a[k]=mid; }}void putout(float a[]){ int i; for(i=0;iM;i++) printf("%fn",a[i]);}void main(){ float a[M]; input(a); change(a); putout(a);}为什么我输入十个0程序无法运行
- k 没有初始化 ..if(fabs(a[j])fabs(max)) {max=a[j];k=j; 都是0的话这里不会执行 }
C语言的选择排序法应该怎么用?
- 编一个把三个数排序的程序,要求用数组的形式和选择排序法,谢谢
- void main(){int a[3]={5,3,4};int k=0,s=0,pos=0,temp=0;for(k=0;k2;k++){ pos=k; for(s=k+1;s3;s++) { if(a[pos]a[s]) { pos=s; } } if(pos!=k) { temp=a[k]; a[k]=a[pos]; a[pos]=temp; } }}