程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 排序算法之選擇排序,排序算法選擇

排序算法之選擇排序,排序算法選擇

編輯:C#入門知識

排序算法之選擇排序,排序算法選擇


選擇排序定義:每一趟從待排序的數據元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最後,直到全部待排序的數據元素排完。 選擇排序是不穩定的排序方法。

class Program
{
    static void Main(string[] args)
    {
        int[] array = new[] { 234, 632, 23, 643, 2, 6, -2, 423, 2342,43 };
        Console.WriteLine("排序前:");
        Console.WriteLine(string.Join(",", array));

        SelectSort(array);

        Console.WriteLine("排序後:");
        Console.WriteLine(string.Join(",", array));
        Console.ReadKey();
    }
    
    /// <summary>
    /// 選擇排序
    /// </summary>
    /// <param name="sources">目標數組</param>
    private static void SelectSort(int[] sources)
    {
        for (int i = 0, len = sources.Length - 1; i <= len; i++)
        {
            // 假設最小值索引
            int minIndex = i;

            // 循環遍歷一遍找到最小值的索引
            for (int j = i + 1; j <= len; j++)
            {
                // 如果最小值比其他元素大,重新設置最小值的索引
                if (sources[minIndex] > sources[j])
                {
                    minIndex = j;
                }
            }

            // 臨時變量交換最小值的位置;
            int temp = sources[i];
            sources[i] = sources[minIndex];
            sources[minIndex] = temp;
        }
    }
}

 


C語言選擇排序算法

void bubble(int a[],int n){ int i,k,temp; for(k=0;k<n-1;k++) { for(i=k+1;i<n;i++) { if(a[k]>a[i]) { temp=a[i]; a[i]=a[k]; a[k]=temp; } } } for(i=0;i<n;i++) printf("%d ",a[i]); printf("\n");}
 

選擇排序算法的思想是什?

每一次都選擇當前序列的最值:
例 1,3,6,9,5 從小到大排序!
第一步 1
第二步 1,3
第三步 1,3,5
第四步 1,3,5,6
第五步 1,3,5,6,9

//遞增選擇排序的實現!

void SelectSort(double *head, int amount)
{
double temp;
int m,n;
for (m=0; m<amount-1; m++)
{
for (n=m+1; n<amount; n++)
{
if (head[n]<head[m])
{
temp=head[n];
head[n]=head[m];
head[m]=temp;
}
}
}
}
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved