zoukankan      html  css  js  c++  java
  • 简单选择排序

    a0,a1,a2 ....aN-2,aN-1

    第1轮循环 面对a0,a1,a2 ....aN-2,aN-1,设此集合中的第1个值a0为初始最小值,循环后确定a0值
    第2轮循环 面对a1 a2 ....aN-2,aN-1,设此集合中的第1个值a1为初始最小值,循环后确定a1
    第3轮循环 面对a2 ....aN-2,aN-1,循环后确定a2

    ...

    第N-1轮循环 面对aN-2,aN-1,循环后确定aN-2(最后一个元素aN-1位置卡定)

    小循环 for(int j=x,j<N,j++)

    让小循环的变量作为大循环的区间量

    大循环for(int x=m,x<n,x++)

    由大循环次数得:n-m = N-1

    由第一次小循环的x值得:m=0

    所以m = 0,n =N-1

     

    for(int i=0,i<N-1;i++){
      int minValueIndex =i;
    for(int j=i,j<N,j++)
    {
    } }

    简单选择排序代码如下:

     1 /*交换两个数*/
     2 void Swap(int& a, int& b)
     3 {
     4     a ^= b;
     5     b ^= a;
     6     a ^= b;
     7 }
     8 void Display(int a[],int len)
     9 {
    10  for( int i=0; i<len; i++)
    11  cout << a[i] << ' ';
    12  cout<<endl;
    13 }
    14 void SelectSort(int a[], int len)
    15 {
    16     for(int i=0; i<len-1; i++)
    17     {
    18         //以第1个待排元素为参照,找最小值。
    19         int minValueIndex = i;
    20         for(int j=i或(i+1);j<len;j++)
    21         {
    22             if(a[j]<a[minValueIndex])
    23                minValueIndex = j;
    24          }
    25         //如果参照值和最小值不是同一个元素则交换位置。
    26         if(minValueIndex != i)
    27           Swap(a[i],a[minValueIndex]);
    28     }
    29 }

    升序选择排序思路:

    数组分成有序区和无序区,初始时整个数组都是无序区。排序时,首先从无序区一个最小的元素(索引)直接放到第1个位置,作为有序区的开始,依次向后延伸,直到整个数组变有序区。

    排序特点:

    从前面开始有序化的,每一轮大循环有序化一个数组元素。

  • 相关阅读:
    拼接sql ()
    HttpPostedFileBase 基类
    jQuery获取Select元素
    HttpFileCollection 类使用
    C# 截取字符串——
    判断人员js
    删除PLSQL 关联表
    mongodb常用操作方法
    json返回取值操作
    idhttp请求网址中的中文输入
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/4491884.html
Copyright © 2011-2022 走看看