首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这个排序对吗,是直接选择排序吗?该如何解决

2012-09-10 
这个排序对吗,是直接选择排序吗?C/C++ codevoid Sort(int *array, int n){int i,j,tfor (i0ini++){fo

这个排序对吗,是直接选择排序吗?

C/C++ code
void Sort(int *array, int n){    int i,j,t;    for (i=0;i<n;i++)    {        for (j=i+1;j<n;j++)        {            if (array[j]<array[i])            {                t = array[j];                array[j] = array[i];                array[i] = t;            }        }    }}

看很多直接选择排序是要操作下标的,这个也不是冒泡(相邻的两个数依次进行比较),求解答!

[解决办法]
这个是选择吧,每次从剩下未排序的数中选择最小的放到i的位置。
[解决办法]
这是简单选择排序,选择排序还有树形选择排序和堆排序,后者都是改进
[解决办法]
是选择排序的 杨路明那本书上也这么写
[解决办法]
选择排序,冒泡每次要n-i
[解决办法]
是一种比较2的选择排序,正常的应该这样:
C/C++ code
void Sort(int *array, int n){    int i,j,t;    for (i=0;i<n-1;i++)    {        int index = i;         for (j=i+1;j<n;j++)        {            if (array[j]<array[index])            {                 index = j;            }        }        t = array[i];        array[i] = array[index];        array[index] = t;    }}
[解决办法]
选择排序
[解决办法]
是选择排序
[解决办法]
我用“index = j;”代替了你的“ t = array[j]; array[j] = array[i]; array[i] = t;”,赋值的次数比你少了两次,效率更高!

探讨
引用:

是一种比较2的选择排序,正常的应该这样:
C/C++ code

void Sort(int *array, int n)
{
int i,j,t;
for (i=0;i<n-1;i++)
{
int index = i;
for (j=i+1;j<n;j++)
{
if (array[j]<a……

2在哪里呢,看上去比较简洁。你写得这个……

[解决办法]
呵呵你的排序是粗糙的选择排序。
标准冒泡排序和选择排序:
C/C++ code
/* 冒泡排序 */void BubbleSort (int s[],int n){    int i,j,temp=0;    int exchange;    exchange=0;       for(i=0;i<n;i++)    {        for(j=n-1; j > i; j--)        {            if(s[j] < s[j-1]){                temp=s[j];//注意冒泡排序交换的是相邻两个元素                s[j]=s[j-1];                s[j-1]=temp;                exchange=1;            }        }        if(!exchange)            return;    }} 

热点排行