c语言-C语言选择法排序函数的实现问题

问题描述

C语言选择法排序函数的实现问题

我在看C语言程序设计是遇到一个问题,用选择法对数组中的5个整数按由小到大排序
#include
int main()
{
void sort(int array[],int n);
int a[5],i;
printf("Please input 5 numbers:n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
sort(a,5);
printf("the sort array:n");
for(i=0;i<5;i++)
printf("%dt",a[i]);
printf("n");
return 0;
}
这段代码没什么问题,主要是里面这个sort函数
这是书中给定的
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;
}
}

而我自己写的少了一个变量k,就不能实现这个功能了,不知道为什么
void sort(int array[],int n)
{
int i,j,t;
for(i=0;i<n-1;i++)
{

    for(j=i+1;j<n;j++)
        if(array[j]<array[i])

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

}

解决方案

选择排序,k是用来记录所选数据的下标。
数组中的5个整数按由小到大排序:第一次遍历就是找到5个数中最小的,k记录的就是这个数的下标

解决方案二:

不知道说的是什么啊,看不懂

解决方案三:

少了两个花括号,改为:
void sort(int array[],int n)
{
int i,j,t = 0;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(array[j]<array[i])
{
t=array[j];
array[j]=array[i];
array[i]=t;
}

    }

}

}

时间: 2024-10-30 16:49:02

c语言-C语言选择法排序函数的实现问题的相关文章

Go语言实现选择法排序实例_Golang

本文实例讲述了Go语言实现选择法排序的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import "fmt" func select_sort(a []int) {  len := len(a)  for i:=0; i < len-1; i++ {   k := i   j:= i + 1     for ; j < len; j++ {    if a[j] < a[k] { k = j }   }   if k

随机产生一组数组,然后用选择法排序

问题描述 要求输入数组的大小可以弄过n来控制,例如n=10,数组就可以随机产生10个数,n=20,就可以产生20个,以此类推.然后用随机产生的数组用选择法排序,帮我改改程序,看看哪里不对,谢谢啦:importjava.io.*;importjava.util.Arrays;importjava.util.Random;publicclassSelection{publicstaticvoidmain(Stringagrs[])throwsIOException{Stringnumber;inta

c语言编程-C语言 选择法 从小往大排列数字 但是我这个程序无法得到正确结果 why

问题描述 C语言 选择法 从小往大排列数字 但是我这个程序无法得到正确结果 why #include void sort(int array[],int n) {int i,t; for(i=0;i<n-1;i++) { if(array[i+1]<array[i]) t=array[i+1];array[i+1]=array[i];array[i]=t;} } int main() { int a[10],i; printf("enter the arrayn"); fo

C语言及程序设计提高例程-27 编写查找和排序函数

贺老师教学链接  C语言及程序设计提高 本课讲解 用函数实现二分查找 #include <stdio.h> int binary_search(int arr[], int n, int k); #define SIZE 10 int main( ) { int d[SIZE] = {1, 3, 9, 12, 32, 41, 45, 62, 75, 77}; int low, high,mid,key,index=-1; printf("Input a key you want to

函数调用-C语言编程题,插入求和函数,排序函数。么有错误,但结果不对!

问题描述 C语言编程题,插入求和函数,排序函数.么有错误,但结果不对! 定义一个包括学号.姓名及三门课的成绩和总分的结构体,利用该结构体说明一个包含五个人的结构体数组.从键盘输入五个人的基本信息.计算总分,并根据总分排序输出一个成绩单! 解决方案 show us the code加个断点调试吧看看每次排序后的顺序是否如预期结果 解决方案二: 这个代码也没贴出来,怎么知道问题出在哪里 解决方案三: 复 6楼 newdos#include void shuru(void);void qiuhepai

C++ 基本算法 冒泡法、交换法、选择法、实现代码集合_C 语言

1.冒泡法: 这是最原始,也是众所周知的最慢的算法了.他的名字的由来因为它的工作看来象是冒泡: 复制代码 代码如下: #include <iostream.h> void BubbleSort(int* pData,int Count) { int iTemp; for(int i=1;i<Count;i++) { for(int j=Count-1;j>=i;j--) {if(pData[j]<pData[j-1]) { iTemp = pData[j-1]; pData[

c语言-C语言 关于用矩形法求定积分

问题描述 C语言 关于用矩形法求定积分 #include""stdio.h""#include""math.h""int main(){ double fun1(double x); double fun2(double x); double fun3(double x); double calc(double adouble bdouble (*p)(double)); int type; double ab; double

c语言-C语言中的冒泡排序法(详细解说)

问题描述 C语言中的冒泡排序法(详细解说) 对输入的20个数进行排序,储存在数组中,在输入一个数,在不改变原序的情况下,输出这21个数.(麻烦各位大神解释清楚点,我还是新手!) 解决方案 C语言--冒泡排序法(详细注释) 解决方案二: 示例: #include"stdio.h" main() { int a[5],*p,i,t,j; for(i=0;i scanf("%d",&a[i]); printf(" "); for(i=0;i {

java语言中哪一种排序算法用的最多?

问题描述 java语言中哪一种排序算法用的最多? java语言中哪一种排序算法用的最多?快速排序既然效率高,为什么我们还要用冒泡呢?冒泡的好处是什么? 解决方案 不能说快速排序一定效率高,对于有序的序列,归并排序的效率就更高.对于大量小整数的排序,基数排序不但效率高,而且占用内存少.各种排序有不同的使用场合.所以都要学习,而不是问哪种常用. 解决方案二: 冒泡排序是用来理解排序的思路的,快速排序是默认的java排序,但是稳定性极差,建议你去百度八大排序,从快速插入排序开始,系统的学习理解排序.