选择排序

选择排序算法思想:

第一次:选第2个数和第一个比较并把小的放左边,继续比较第3个和第一个,这样一圈下来最小的到第一位;

第二次:选第3个数和第二个数比较

如此直到最后一个数。

 

 

C语言版

#include <stdio.h>;
void Selectsort(int A[],int n) 
{
     int i,j,temp; 
     for(i=0;i<n;i++) 
     {
          for(j=i+1;j<n;j++)  /* 从j往前的数据都是排好的,所以从j开始往下找剩下的元素中最小的 */
          {
               if(A[i]>A[j])  /* 把剩下元素中最小的那个放到A[i]中 */
               {
                temp=A[i]; 
                A[i]=A[j]; 
                A[j]=temp;
               }
          }
    } 
}



int main(void)
{
    int arr[]={1,5,2,4,3,8,6,7,9};
	int count=sizeof(arr)/sizeof(int);
    
    Selectsort(arr,count);

	int k;
	for(k=0;k<count;k++)
	{
		printf("%d",arr[k]);
	}
    return 0;
}


 

 

 

PHP代码

<?php
      $arr=array(1,5,2,4,3,8,6,7,9);
      print "排序前 ";
      print_r($arr);
      echo "<br>";
      $arr=select_sort($arr);
      //$arr=bubble_sort($arr);
      print "排序后 ";
      print_r($arr);
      
      //选择排序
      function select_sort($array)
      {
          $count=count($array);
          $k=0;
          for($i=0;$i<$count;$i++)
          {
              for($j=$i+1;$j<$count;$j++)
              {
                  if($array[$i]>$array[$j])
                  {
                      $temp=$array[$i];
                      $array[$i]=$array[$j];
                      $array[$j]=$temp;
                      $k++;
                  }
              }
          }
          echo "一共用了".$k."次<br>";
          return $array;
      }
      
      //冒泡排序
      function bubble_sort($array)
      {
          $count = count($array);
          $bool=true;$k=0;
          for($i=0;$i<$count;$i++)
          {
              for($j=$count-1;$j>$i;$j--)
              {
                  if($array[$j]<$array[$j-1])
                  {
                      $temp=$array[$j];
                      $array[$j]=$array[$j-1];
                      $array[$j-1]=$temp;
                      $bool=false;
                      $k++;
                  }
              }
              if($bool==true)
              {
                  break;
              }
          }
          echo "一共用了".$k."次<br>";
          return $array;
      }
    ?>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值