2 weixin 29257017 weixin_29257017 于 2015.07.23 23:29 提问

c语言排序问题简单的选择排序

#include#define N 20void px(int a[],int n){ int i,j,t,min; for(i=0;ia[j]) { t=a[j]; a[j]=min; min=t; } } printf("%d\t",a[i]); }}int main(){ int a[N],n,i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",a[i]); px(a,n); for(i=0;i<n;i++) printf("%d\t",a[i]); return 0;} 这是c语言中的一个选择排序,用vc编译和链接都没错,执行的时候出错了,各位大神请指点一二。

4个回答

caozhy
caozhy   Ds   Rxr 2015.07.24 00:39
已采纳
 #include "stdafx.h"

#include<stdio.h>
#define N 20

void px(int a[],int n)
{
    int i,j,t,min;
    for(i=0;i<n;i++)
    {
        min=i;
        for(j=i+1;j<n;j++)
        {
            if(a[min]>a[j])
            {
                min=j;
            }
        }
                t=a[i];
                a[i]=a[min];
                a[min]=t;
        //printf("%d\t",a[i]);
    }
}

int main()
{
    int a[N],n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    px(a,n);
    for(i=0;i<n;i++)
        printf("%d\t",a[i]);
    return 0;
}
u013276880
u013276880 回复C程序员~: 你之前的程序真的能编译过吗?
接近 3 年之前 回复
weixin_29257017
weixin_29257017 谢谢了啊。
接近 3 年之前 回复
caozhy
caozhy 回复C程序员~: 错误有好几个,你对照下就知道。选择排序的思路,先找到每趟最小的元素,和头元素交换。因此交换要写在循环后,另外,你记录下最小元素的值没用,要记录下标,才好交换,最后scanf需要变量的地址。
接近 3 年之前 回复
weixin_29257017
weixin_29257017 请问下这样做的理由,我的程序错在哪里呢。
接近 3 年之前 回复
linyang24
linyang24   2015.07.24 14:42

void px(int a[],int n)
{
int i,j,t,min;
for(i=0;i {
min=i;
for(j=i+1;j {
if(a[min]>a[j])
{
min=j;
}
}
t=a[i];
a[i]=a[min];
a[min]=t;
//printf("%d\t",a[i]);
}
}

int main()
{
int a[N],n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
px(a,n);
for(i=0;i<n;i++)
printf("%d\t",a[i]);
return 0;
}

sina_2831808769
sina_2831808769   Rxr 2015.07.25 13:39

include "stdafx.h"

#include
#define N 20

void px(int a[],int n)
{
int i,j,t,min;
for(i=0;i {
min=i;
for(j=i+1;j {
if(a[min]>a[j])
{
min=j;
}
}
t=a[i];
a[i]=a[min];
a[min]=t;
//printf("%d\t",a[i]);
}
}

int main()
{
int a[N],n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
px(a,n);
for(i=0;i<n;i++)
printf("%d\t",a[i]);
return 0;
}

CSDNXIAON
CSDNXIAON   2015.07.23 23:39

c语言简单选择排序
c语言选择排序
c语言选择排序
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
简单的C语言选择排序实现代码
#include typedef int elemType; void selectSort(elemType *arr,int arrLength) { int index=0; elemType currentMin; int positionOfMin; int i; elemType tempval; if (NULL == arr) retur
C语言冒泡排序法和选择排序法的区别
冒泡排序法: #define _CRT_SECURE_NO_WARNINGS 1 #include #include #include void rank(int arr[], int len) { int i = 0; int j = 0; int temp = 0; for (i = 0; i < len-1; i++) { for (j = 0; j < len-1- i;
c语言数据结构 简单选择排序
#include #include #include clock_t start,stop; double duration; /**   数据结构 简单选择排序  */  void SelectSort(int *a,int n)  {   int temp=0,index;   for(int i=0;i   {   index=i;   for(int j=i
C语言选择排序详解及其实现
选择排序(Selection sort)是一种简单直观的排序算法。这次我们依然将其分为有序组与无序组。 (我将冒泡排序的链接放到这里,有兴趣的可以看看,冒泡排序:http://blog.csdn.net/llzk_/article/details/51547923) 它的工作原理是每一次从无序组的数据元素中选出最小(或最大)的一个元素,存放在无序组的起始位置,无序组元素减少,有序组元素增加,直
Linux下简单的c编程——选择法排序
针对函数和数组的C语言的学习,我今天来写一个比较典型的数组和函数的结合的例子——选择法排序 选择法顾名思义,先选择最大和最小的数,然后再进行排序 第一步首先附上我的代码。第一段代码是实现从大到小排序,建立selectionsort.c文件#include void arrange(int a[10]){ int k; int j; int i; int temp; for(i =
C语言简单选择排序算法的实现
简单选择排序从元素中跳出最小关键字,将其放在已排序列的最后,未排序的序列最前,直到全部排序完成为止,其空间复杂度为O(1),时间复杂度为O(n2)。下面是实现代码: 首先仍然是预定义和类型定义: #define OK 1 #define ERROR 0 typedef int Status; typedef int ElemType; typedef struct{ ElemType *
排序算法之选择法排序(C/C++)
简单选择排序的基本思想:第1趟,在待排序记录r[1]~r[n]中选出最小的记录,将它与r[1]交换;第2趟,在待排序记录r[2]~r[n]中选出最小的记录,将它与r[2]交换;以此类推,第i趟在待排序记录r[i]~r[n]中选出最小的记录,将它与r[i]交换,使有序序列不断增长直到全部排序完毕 void select_sort(int a[], int n) { int i =
简单选择排序(直接选择排序)
【分类】 选择类排序【基本思想】 每一趟从待排序的数据元素中选出最小(最大)的元素,顺序放在待排序的数列最前,直到全部待排序的数据元素全部排完。【特点】 数据结构:数组 稳定性:不稳定【过程】 初始关键字:『 8,5,2,6,9,3,1,4,0,7 』 第一趟排序后:0,『5,2,6,9,3,1,4,8,7』 第二趟排序后:0,1,『2,6,9,3,1,4,8,7』 第三趟排序后:0,1,2,『6...
(c语言)选择排序法和冒泡排序法
问题描述: 给定一个数组(或者输入一个数组),分别运用选择排序法和冒泡排序法将所要的结果输出。 程序分析:                                         选择排序 1>.对于选择排序,首先理解排序的思想。给定一个数组,这种思想首先假定数组的首元素为最大(最小)的。此时就要利用3个变量i,j,k表示元素的下标。i表示当前,j表示找到的最大(最小)的下标,k用
C语言 简单选择排序算法
选择排序是排序算法的一种,这里以从小到大排序为例进行讲解。 基本思想及举例说明 选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。 在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。 下面,以对 3  2  4  1 进行选择排序说明排序过程,使用min_ind