1. 程式人生 > >簡單選擇排序(C語言版本)

簡單選擇排序(C語言版本)

基本思想:在陣列中找到最小的數,將其放置到第一個位置,第二小的數,放在陣列中的第二個位置,依次類推。在寫程式碼的開始,竟然與冒泡法的原理混淆,需要注意。

程式碼:

#include<stdio.h>
#include<windows.h>
int main()
{
    int a[] = {1,54,6,3,78,34,12,45};
    int n= 8;
    int i,j;
    for(i=0;i<n;i++)
    {
        printf("%d\t",a[i]);
    }
    printf("\n");

    int position,temp;
    for(i=0;i<n;i++)
    {
        position = i;
        temp = a[i];
        for(j=i+1;j<n;j++)
        {
            if(a[j]<temp)
            {
                temp = a[j];
                position = j;
            }
        }
        a[position] = a[i];
        a[i] = temp;
    }

    for(i=0;i<n;i++)
    {
        printf("%d\t",a[i]);
    }
    printf("\n");
    system("pause");
    return 0;
}


相關推薦

簡單選擇排序C語言版本

基本思想:在陣列中找到最小的數,將其放置到第一個位置,第二小的數,放在陣列中的第二個位置,依次類推。在寫程式碼的開始,竟然與冒泡法的原理混淆,需要注意。 程式碼: #include<stdio.h> #include<windows.h> int

資料結構 簡單選擇排序C語言實現

       選擇排序的基本思想:每一趟在n-i+1(i=1,2,3,…,n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。 演算法思想       第一趟簡單選擇排序時,從第一個記錄開始,通過n-1 次關鍵字比較,從n 個記錄中選出關鍵字最小的記錄,並和第

八大排序演算法之三簡單選擇排序c語言

選擇排序—簡單選擇排序(Simple Selection Sort) 基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元

選擇排序C語言

採用先確定位置然後找數字的方法。 選定位置或者在最前或者在最後。  把選定位置上的數字和所有其他數字做順序調整直到把合適數字放在選定位置上。 /*  * 插入排序  * */ #include <stdio.h> void ins

排序C語言實現

names 博客 鏈接 c語言實現 建立 ron 要求 clas [1] 之前的博客介紹介紹了數組的兩種排序算法:插入排序和歸並排序(採用遞歸),見鏈接http://blog.csdn.net/u013165521/article/detai

歸並排序C語言實現

ngs 基本 merge 兩個 它的 efi 分別是 void rec 合並排序(MERGE SORT)是又一類不同的排序方法,合並的含義就是將兩個或兩個以上的有序數據序列合並成一個新的有序數據序列,因此它又叫歸並算法。 它的基本思想就是假

qsort歸納學習c語言版本

serve www. 返回 char s regexp ever char* str ret 參考:https://www.cnblogs.com/ForeverJoker/archive/2013/05/25/qsort-sort.html 包含在<stdlib.h

排序C語言實現

內部排序 利用 int 分治 arr 個數 size quic 外部排序 讀數據結構與算法分析 插入排序 核心:利用的是從位置0到位置P都是已排序的 所以從位置1開始排序,如果當前位置不對,則和前面元素反復交換重新排序 實現 void InsertionSort

素數的幾道小題c語言版本

求素數一直以來是c語言的經典題目,下面是PAT做題過程中想到的幾道素數小題,整理如下: 1 求素數的兩種方法 1.1 判斷n是否能被1~n-1整除 #include<stdio.h> int main() { int i, n; scanf("%d", &

排序演算法(三):簡單選擇排序Simple Selection Sort

基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元素(最後一個數)比較為止。 簡單選擇排序的示例: 操作方法: 第一趟,從n

資料結構-簡單選擇排序含全部程式碼

   函式分析如下: SelectSort(SqList &L) 引數:順序表L 功能:排序(預設升序)空間複雜度:O(1) 時間複雜度:O(n方)                           穩定性:不穩定 思想:假設第i個值為當前最小值(0到i-1已經為

設計模式之簡單工廠模式C#語言描述

嚴格意義上來說,簡單工廠模式並不屬於GoF的23種設計模式,但是它是學習其他工廠模式的基礎和前提條件。理解了簡單工廠模式,學習工廠方法模式和抽象工廠模式會比較容易一些。 簡單工廠模式的定義 定義一個工廠類,他可以根據不同的引數返回不同類的例項。通常情況下,被建立的類的例項通常都具有共同的父類。

資料結構-順序表的實現以及一些功能c語言版本

#define MAXSIZE 100 //MAXSIZE為線性表可能的最大長度 #include<stdio.h> typedef int ElemType; typedef struct { ElemType data[MAXSIZE]; int length

有趣的演算法:3分鐘看懂希爾排序C語言實現

在上一次的演算法討論中,我們一起學習了直接插入排序。它的原理就是把前i個長度的序列變成有序序列,然後迴圈迭代,直至整個序列都變為有序的。但是說來說去它還是一個時間複雜度為(n^2)的演算法,難道就不能再進一步把時間複雜度降低一階麼?確實,以上幾種演算法相對於之前的O(n^2)

資料結構排序演算法之歸併排序c語言實現

博主身為大二萌新,第一次學習資料結構,自學到排序的時候,對於書上各種各樣的排序演算法頓覺眼花繚亂,便花了很長的時間盡力把每一個演算法都看懂,但限於水平有限,可能還是理解較淺,於是便將它們逐個地整理實現出來,以便加深理解。 歸併排序就是通過將一個具有n個key記錄的線性表,看

八皇后問題C語言版本

八皇后問題是一個古老而著名的問題,是回溯演算法的典型例題。該問題是十九世紀著名的數學家高斯1850年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線(對角線)上,問有多少種擺法。 解決方法1 下面的C程式碼可以解

帶頭節點連結串列之插入排序C語言

主要是對插入排序進行復習,先寫一個數組的插入排序。 #include <stdio.h> void traverse(int *arr, int len); void insert_sort(int *arr, int len); int ma

排序演算法-合併排序C語言實現

都說“演算法是程式的靈魂”,而排序是計算機儲存控制方面不能沒有的操作。它在資料的存取,查詢搜尋,資料統計這些基礎資料操作方面有著重要的應用。所以排序演算法是必須是很有研究的。 這次,我學習的是-歸併排序演算法。據說該演算法是馮諾依曼發明的。這個排序演算法比起直

分治法-----歸併排序C語言描述

歸併排序的基本思想: 將兩個及其以上的有序表合併為一張有序表,把待排序序列通過分治法分為若干個有序子序列,然後每兩個子序列合併為一個子序列,經過多次合併後整合為一張有序表。 排序過程如圖: 程

串列埠除錯助手上輸入資料,然後再數碼管顯示C語言版本

//串列埠除錯助手上輸入資料,然後再數碼管顯示 #include <reg52.h> #include "uart.h"   //數碼管從0-F uint8 number[]={0x0c0,0x0F9,0x0A4,0x0B0,     0x99,0x92,0x8