c语言选择排序,给一个子程序的代码吧,要最简单的喽,谢谢啦!

如题所述

// 选择排序
void SelectSort(int arr[], int n)
{
int i, j;
int min;

for(i = 0; i < n - 1; i++)
{
int index = 0;
min = arr[i];
for(j = i + 1; j < n; j++) //找出 i+1 - n 无序区的最小者与arr[i]交换
{
if(arr[j] < min)
{
min = arr[j];
index = j;
}
}
if(index != 0) //表明无序区有比arr[i]小的元素
{
arr[i] = arr[i]^arr[index];
arr[index] = arr[i]^arr[index];
arr[i] = arr[i]^arr[index];
}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-11
#include <stdio.h>
#define N 10
int main()
{
int i, j, k,temp;
int a[N];
printf("please input %d numbers:\n",N);
for(i = 0; i < N; i++)
{
scanf("%d",&a[i]);
}

for (i = 0; i < N-1; i++)
{
k = i; //标记起始位置,不能少
for (j = i+1; j < N; j++)
{
if (a[i] > a[j])
{
k = j; //标记将要交换的位置

if (k != i)
{
temp = a[i];
a[i] = a[k];
a[k] = temp;
}
}
}
}

for(i = 0; i < N; i++)
{
printf("%-5d",a[i]);
}
printf("\n");

return 0;
}
第2个回答  2011-06-11
void Selection(int *p)
{
int i,j;
int temp;
int max = 0;
for(i=0;i<14;i++)
{
max = i;
for(j=i+1;j<15;j++)
{
if(p[i]<p[j])
{
max = j;
temp = p[i];
p[i] = p[j];
p[j] = temp;
}
}
}
}
对数组p排序。很简单咯~~
要改变排序方式,改一下if语句就好。
相似回答