对长度为 n 的整型数组 a 进行升序的选择排序。

来源:百度知道 编辑:UC知道 时间:2024/06/20 01:02:59
//C语言,这个程序改怎么写呢?
//对长度为 n 的整型数组 a 进行升序的选择排序。
#include <stdio.h>
void arrSeleSort( int a[], int n);

void main()
{ int n3;
int a3[1024];
printf("please enter the element number of the array :");
scanf("%d",&n3);
for(int k=0;k<n3;k++)
scanf("%d",&a3[k]);
arrSeleSort(a3,n3);
}

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

//运行结果是这样的:
please enter the element number of the array :4
2
6
3
8
23-8589934606
Press any key to continue

不知道错在哪里,请高手指点,谢谢!!
谢谢 liujq007 和 merryhongxia
能不能告诉我为什么要
int i,

#include <stdio.h>
void arrSeleSort( int a[], int n);

void main()
{ int n3;
int a3[1024];
printf("please enter the element number of the array :");
scanf("%d",&n3);
for(int k=0;k<n3;k++)
scanf("%d",&a3[k]);
arrSeleSort(a3,n3);
}

void arrSeleSort( int a[], int n)
{
int k;
for(int i=0;i<n-1;i++) //选择排序
{
k = i;
for(int j=i+1;j<n;j++)
{
if(a[k]>a[j])
{
k = j;
}
if (k != i)
{
}
{
int temp=a[k];
a[k]=a[i];
a[i]=temp;
}
}
}
for(i=0;i<n;i++)
printf(" %d ",a[i]);
printf("\n");
}

你那样做用的不是选择排序~~

for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
if(a[j]>a[j+1])

不说其他的,当j=n-1的时候,a[j+1]就数组下标越界了
------------------------------------------

若a为一维整型数组的数组名,则对指针变量p的正确说明和初始化为 19、以下对一维整型数组a的正确说明是▁▁▁▁ 写出一个主函数,为一维整型数组a[10]输入数据,并对数组中的数据进行转置,然后输出此数组中的元素。 如果定义二维数组a[n][n],n为变量,不能确定n的大小,而数组规定n不能为变量,怎么办? 编一void型函数maxmin( )通过形参求整型数组a[n]中的最大值和最小值 C++ 定义一个一维数组,长度为N输入N个数然后逆向输出的代码 当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为? c语言 一维数组 长度自定的 输入数组数组的长度 并且输入n个数。 c++语言 一维数组 长度自定的 输入数组数组的长度 并且输入n个数。 编写一个函数,分别求出一维整型数组a[n]中所有奇数元素和所有偶数元素