首页 > 编程语言 > 详细

选择排序和优化的实现

时间:2016-04-07 01:37:20      阅读:317      评论:0      收藏:0      [点我收藏+]

遍历一次数据找到最小的标记起来,遍历结束后把数据放到相应位置

void SelectSort(int *a, int length)

{

if (a == NULL || length <= 0)

{

return;

}

for (int i = 0; i < length; i++)

{

int j = i;

int min = a[i];

int index = i;

while (j < length)

{

if (a[j] < min)

{

min = a[j];

index = j;

}

//if (a[j] < a[i])

//{

// int tmp = a[i];

// a[i] = a[j];

// a[j] = tmp;

//}

++j;

}

a[index] = a[i];

a[i] = min;

}

}

在一次遍历数据的时候把最大的和最小的数据标记起来在一次遍历后把最小大数据放到相应位置,并防止最大和最小的交换导致出错。

void SelectSort(int *a, int length)

{

if (a == NULL || length <= 0)

{

return;

}

int size = length - 1;

for (int i = 0; i <= size; i++,size--)

{

int min = a[i];

int max = a[size];

int minindex = i;

int maxindex = size;

int j = i;

while (j<= size)

{

if (a[j] < min)

{

min = a[j];

minindex = j;

}

if (a[j]>max)

{

max = a[j];

maxindex = j;

}

++j;

}

if (maxindex == i && minindex == size)

{

a[i] = min;

a[size] = max;

}

else

{

a[minindex] = a[i];

a[i] = min;

a[maxindex] = a[size];

a[size] = max;

}

}

}


选择排序和优化的实现

原文:http://zheng2048.blog.51cto.com/10612048/1761083

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!