簡單選擇排序(simple Selection Sort)
演算法思想:每一趟從待排序的記錄中選出關鍵字的最小記錄,按照順序放在已排序的記錄序列的最後,直到全部排完。
時間複雜度:O(n^2)–兩層迴圈,並沒有優化的方法。
空間複雜度:O(1)—–記錄交換時候需要一個輔助空間
演算法特點:穩定性可以控制。可以用鏈式儲存。記錄移動次數較小。時間複雜度較高。
不多BB,直接上程式碼:
#include <iostream>
#include <stdio.h>
using namespace std;
void EasySelectionSort(int* original,int length)
{
int i,j,temp;
int minest=0;
for(i=1;i<=length;i++)
{
minest=original[i];
for(j=i+1;j<=length;j++)//i位置後面的記錄組中進行迴圈打擂,如果找到比original更小的數,就與之交換。
if(original[j]<minest)
{
temp=minest;
minest=original[j];
original[j]=temp;
}
}
}
int main()
{
int paixu[100]={0};
int i,n;
paixu[0]=0;
for(i=1;i<100;i++)
{
scanf("%d",&paixu[i]);
if(getchar()=='\n')
break;
else
continue;
}
n=i;
EasySelectionSort(paixu,n);
printf("排序後的結果:\n");
//輸出排序後的陣列
for(i=1 ;i<=n;i++)
{
printf("%d ",paixu[i]);
}
printf("\n");
return 0;
}
總結:沒有比這更簡單更容易實現的排序演算法了。主要用於理解後面的堆排序演算法。
相關推薦
排序演算法(三):簡單選擇排序(Simple Selection Sort)
基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元素(最後一個數)比較為止。 簡單選擇排序的示例: 操作方法: 第一趟,從n
003.選擇排序—簡單選擇排序(Simple Selection Sort)
#include <stdlib.h>#include <stdio.h>#define aray_num 10void printfArray(int list[]){ int i; for(i=0; i<aray_num-1; i++) {
簡單選擇排序(simple Selection Sort)
演算法思想:每一趟從待排序的記錄中選出關鍵字的最小記錄,按照順序放在已排序的記錄序列的最後,直到全部排完。 時間複雜度:O(n^2)–兩層迴圈,並沒有優化的方法。 空間複雜度:O(1)—–記錄交換時候需要一個輔助空間 演算法特點:穩定性可以控制。可以用鏈式
排序演算法---簡單插入排序(Simple insertion sort)
簡單插入排序是由n-1趟排序組成,簡單來說,就是假定一個長度為n的陣列,把第0位作為起始位,並認為有序(只有一個元素嘛),然後遍歷從1到n-1下標的元素,每次遍歷一個進行一次排序,直到n-1趟排序完成,這個排序的演算法複雜度最優的情況下,為O(n),最壞的情況下還是O(n的平方); 程式碼如
資料結構-簡單選擇排序(含全部程式碼)
函式分析如下: SelectSort(SqList &L) 引數:順序表L 功能:排序(預設升序)空間複雜度:O(1) 時間複雜度:O(n方) 穩定性:不穩定 思想:假設第i個值為當前最小值(0到i-1已經為
簡單選擇排序(C語言版本)
基本思想:在陣列中找到最小的數,將其放置到第一個位置,第二小的數,放在陣列中的第二個位置,依次類推。在寫程式碼的開始,竟然與冒泡法的原理混淆,需要注意。 程式碼: #include<stdio.h> #include<windows.h> int
資料結構 簡單選擇排序(C語言實現)
選擇排序的基本思想:每一趟在n-i+1(i=1,2,3,…,n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。 演算法思想 第一趟簡單選擇排序時,從第一個記錄開始,通過n-1 次關鍵字比較,從n 個記錄中選出關鍵字最小的記錄,並和第
資料結構:八大排序之簡單選擇排序(選擇排序)
1、演算法思想:在待排記錄中依次選擇關鍵字最小的記錄新增到有序序列中,逐漸縮小範圍直至全部記錄選擇完畢。每一趟從待排的無序區中選出關鍵字最小的記錄,順序放在已排好序的子序列的最後,直至記錄全部排完。 2、複雜度:直接選擇排序的時間複雜度為O(n2)。空間複雜度 O(1) 穩
氣泡排序(順序表)和簡單選擇排序(單鏈表)
河南理工大學 16 學年—17學年第 1 學期 資料結構 實驗任務書 專業名稱: 實驗學時: 2 課程名稱:資料結構 任課教師: 翟海霞 實驗題目: 排序演算法實現與比較 實驗環境: Visual C+
簡單選擇排序(O(n2))
/*徐子峰大帥哥 哈哈哈哈哈*/ /*日期:2017-11-12*/ #include <iostream> using namespace std; void Selec
八大排序演算法之三簡單選擇排序(c語言)
選擇排序—簡單選擇排序(Simple Selection Sort) 基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元
簡單選擇排序(直接選擇排序)
【分類】 選擇類排序 【基本思想】 每一趟從待排序的資料元素中選出最小(最大)的元素,順序放在待排序的數列最前,直到全部待排序的資料元素全部排完。 【特點】 資料結構:陣列 穩定性:不穩定 【過程】 初始關鍵字:『 8,5,2,6,9,3,1,4,0
直接插入排序(Straight Insertion Sort)
temp wap 序表 maxsize 得到 進行 efi size 長度 直接插入排序(Straight Insertion Sort)的基本操作是將一個記錄插入到已經排好序的有序表中,從而得到一個新的、記錄數增1的有序表。 /* 對順序表L作直接插入排序 */ v
九大排序演算法之選擇排序(原理及實現)
1、演算法思想:選擇排序,從頭至尾掃描序列,找出最小的一個元素,和第一個元素交換,接著從剩下的元素中繼續這種選擇和交換方式,最終得到一個有序序列。 2、演算法過程 舉個栗子(第一趟的排序過程) 原始序列:49、38、65、97、76、13、27、49 1)在進行選擇排
直接插入排序(Straight Insertion Sort)- java實現
學習自嚴蔚敏、吳偉民的《資料結構》-清華大學出版 最簡單的排序方法。基本操作是將一個記錄插入到已排序好的有序表中,從而得到一個新的、記錄數增1的有序表。 先看程式碼: public static int[] insertSort(int[] arr) { for
折半插入排序(Binary Insertion Sort)- java實現
學習自嚴蔚敏、吳偉民的《資料結構》-清華大學出版 在上一篇有關直接插入排序中,當待排序記錄的數量n很小時,這是一種很好的排序方法。但是,通常待排序的序列中的記錄數量n很大,則不宜採用直接插入排序。為此,在此基礎上,從減少“比較”、“移動”這兩種操作的次數著眼,可以使用
演算法與資料結構(十三) 氣泡排序、插入排序、希爾排序、選擇排序(Swift3.0版)
本篇部落格中的程式碼實現依然採用Swift3.0來實現。在前幾篇部落格連續的介紹了關於查詢的相關內容, 大約包括線性資料結構的順序查詢、折半查詢、插值查詢、Fibonacci查詢,還包括數結構的二叉排序樹以及平衡二叉樹的構建與查詢,然後還聊了雜湊表的構建與查詢。接下來的幾篇部落格中我們就集中的聊一下常見的集中
簡單線性迴歸(Simple Linear Regression)下
1、簡單線性迴歸模型舉例: 汽車賣家做電視廣告數量與賣出的汽車數量: 如何訓練適合簡單線性迴歸模型的最佳迴歸線? 使sum of squares最小 計算 分子 = (1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-2
Java程式碼:陣列選擇排序 (升序降序)
public class test9 {public static void main(String[] args){int []a={12,2,45,65,99,3,21};System.out.println("原陣列為:"+"\n"+a[0]+"\t"+a[1]+"\t
簡單工廠模式(simple factory pattern)
vs2005+C#+.net 2.0 using System;using System.Collections.Generic;using System.Text;namespace SimpleFactoryPattern...{ publicclass S