码迷,mamicode.com
首页 > 编程语言 > 详细

二元选择排序

时间:2017-12-28 23:15:53      阅读:188      评论:0      收藏:0      [点我收藏+]

标签:info   oid   tmp   tar   std   class   time   最小   引擎   

1.目的

  这几天看别人的算法博客,发现有些人的代码存在错误。并且在搜索引擎上排名非常高,误导了很多人,所以自己写了这篇博客。

2.算法描述

  二元选择排序是对简单选择排序的一种改进。简单选择排序就是从数据中选择出最小的值与第一个位置的数据交换,然后在剩下的数据中选择最小的值与第二个位置的数据交换以此类推。而二元选择排序就是在每次选出数据中的最大值最小值分别和第一位和最后一位交换。

 

3.代码

/**
* time:2017年12月28日
* author:Triomphe
*/

#include <stdio.h> #include <stdlib.h>
//二元选择排序
void TwoSelectSort(int a[], int n){
    int i,j,mintmp,maxtmp,max,min;
 
  for(i=0;i<n/2;i++){
     min=i,max=i; //先将最小值与最大值下标指向未排序的第一个数。 for(j=i+1;j<n-i;j++){ if(a[j]<a[min]){ min=j; continue; } if(a[j]>a[max]){ max=j; } }     
    //设置mintmp,maxtmp来暂时存储数据,有些博客使用一个变量来交换最大值与最小值就会出错。 mintmp=a[min]; maxtmp=a[max]; a[min]=a[i]; a[max]=a[n-i-1]; a[i]=mintmp; a[n-i-1]=maxtmp; printArray(a,n); printf("\n"); } } //输出数组 void printArray(int a[],int n){ int i; for(i=0;i<n;i++){ printf("%d ",a[i]); } }

int main() {
  //定义的数组
int data[]={275,322,12,2,23,12,43,123,22,3,56,34,99,12,1232,3,14,45,22,22,11,44,74}; int n =sizeof(data)/sizeof(data[0]); TwoSelectSort(data,n); printArray(data,n); return 0; }

 4.最终结果

技术分享图片

 

二元选择排序

标签:info   oid   tmp   tar   std   class   time   最小   引擎   

原文地址:https://www.cnblogs.com/Triomphe/p/8137602.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!