003.選擇排序—簡單選擇排序(Simple Selection Sort)
#include <stdio.h>
#define aray_num 10
void printfArray(int list[])
{
int i;
for(i=0; i<aray_num-1; i++)
{
printf("%d, ", list[i]);
}
printf("%d\n", list[aray_num-1]);
}
void simleSelectSort1(int list[], int n)
{
int i=0, j=0;
//用來儲存最小值得索引
int mini_index = 0;
int temp=0;
//需要遍歷獲得最小值的次數
//要注意一點,當要排序N個數,已經經過N-1次遍歷後,已經是有序數列
for(i=0; i<n-1; i++)
{
mini_index = i;
//尋找第i個小的數值
for(j=i+1; j<n;j++)
{
if(list[mini_index] > list[j])
{
mini_index = j;
}
}
//將找到的第i個小的數值放在第i個位置上
if(mini_index != i)
{
temp = list[i];
list[i] = list[mini_index];
list[mini_index] = temp;
}
}
return;
}
void simleSelectSort2(int list[],int n) {
int i ,j , min ,max, tmp;
for (i=1 ;i <= n/2; i++)
{
// 做不超過n/2趟選擇排序
min = i; max = i ; //分別記錄最大和最小關鍵字記錄位置
for (j= i+1; j<= n-i; j++)
{
if (list[j] > list[max])
{
max = j ;
continue;
}
if (list[j]< list[min])
{
min = j ;
}
}
//該交換操作還可分情況討論以提高效率
tmp = list[i-1];
list[i-1] = list[min];
list[min] = tmp;
tmp = list[n-i];
list[n-i] = list[max];
list[max] = tmp;
}
}
int main(int argc, char **argv)
{
//初始化一個序列
int aray1[aray_num] = {50, 123, 543, 187, 49, 30, 0, 2, 11, 100};
printf("before sort, the data is :");
printfArray(aray1);
//呼叫簡單排序方法
simleSelectSort1(aray1, aray_num);
printf("after sort, the data is :");
printfArray(aray1);
system("pause");
return 0;
}
相關推薦
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)
基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元素(最後一個數)比較為止。 簡單選擇排序的示例: 操作方法: 第一趟,從n
簡單選擇排序(simple Selection Sort)
演算法思想:每一趟從待排序的記錄中選出關鍵字的最小記錄,按照順序放在已排序的記錄序列的最後,直到全部排完。 時間複雜度:O(n^2)–兩層迴圈,並沒有優化的方法。 空間複雜度:O(1)—–記錄交換時候需要一個輔助空間 演算法特點:穩定性可以控制。可以用鏈式
排序演算法---簡單插入排序(Simple insertion sort)
簡單插入排序是由n-1趟排序組成,簡單來說,就是假定一個長度為n的陣列,把第0位作為起始位,並認為有序(只有一個元素嘛),然後遍歷從1到n-1下標的元素,每次遍歷一個進行一次排序,直到n-1趟排序完成,這個排序的演算法複雜度最優的情況下,為O(n),最壞的情況下還是O(n的平方); 程式碼如
簡單線性迴歸(Simple Linear Regression)下
1、簡單線性迴歸模型舉例: 汽車賣家做電視廣告數量與賣出的汽車數量: 如何訓練適合簡單線性迴歸模型的最佳迴歸線? 使sum of squares最小 計算 分子 = (1-2)(14-20)+(3-2)(24-20)+(2-2)(18-20)+(1-2)(17-2
簡單工廠模式(simple factory pattern)
vs2005+C#+.net 2.0 using System;using System.Collections.Generic;using System.Text;namespace SimpleFactoryPattern...{ publicclass S
建立型模式——簡單工廠模式(Simple Factory Pattern)
開頭 我們可以將設計模式分為三大類,分別為建立型模式、結構型模式、行為型模式,每種模式有著各自的特點。 建立型模式——它是用來描述如何建立物件的。 思維導圖:建立型模型分類建立型模式又分為簡單工廠
簡單工廠模式(Simple Factory Pattern)學習
書籍:《C#設計模式》(《C# Design Patterns:A Tutorial》) 【美】 James W.Cooper 著 張志華 劉雲鵬 等譯 簡單工廠模式:簡單工廠類根據提供給它的資料,返回幾個可能類中的一個類的例項。通常它返回的類都有一個共同的父類和共同的方
設計模式學習筆記--簡單工廠模式(Simple Factory Pattern)【建立型模式】
簡單工廠模式: 工廠是用來生成產品的,簡單工廠,說明工廠能力有限因此只生成一個系列的產品。 此係列產品提供一個產品抽象,具體的產品在派生產品中進行實現。 簡單工廠(一個類),用來管理這個系列產品的生產。工廠中會有一個creat(char* name)成員函式name是需要生
DB2資料庫查詢過程(Query Processing)----簡單索引訪問(Simple Indexed Access)
索引對於資料庫的效能有著舉足輕重的作用。上一篇文章已經介紹了沒有索引的情況下表掃描訪問相關知識,本文討論有索引的情況下資料庫系統如何使用索引進行資料訪問,內容會比較複雜,強烈建議參看《深入理解DB2索引(Index)》,理解DB2索引的結構,特別是B+樹後再閱讀本文,否則看
設計模式-(3)簡單工廠模式(Simple Factory Pattern)
一、引言 在面向物件程式設計中, 最通常的方法是一個new操作符產生一個物件例項,new操作符就是用來構造物件例項的。但是在一些情況下, new操作符直接生成物件會帶來一些問題。舉例來說, 許多型別物件的創造需要一系列的步驟: 你可能需要計算或取得物件的初始
簡單選擇排序(Simple Selection Sort)
enc main as2 gdt knn tns bof pll n+1 body, table{font-family: 微軟雅黑; font-size: 13.5pt} table{border-c
排序演算法(四)、選擇排序 —— 簡單選擇排序 和 堆排序
1、簡單選擇排序簡單選擇排序思想是:從頭到尾(從後往前也行)遍歷序列,先固定第一個位置的資料,將該位置後面的資料,依次和這個位置的資料進行比較,如果比固定位置的資料大,就交換。這樣,進行一趟排序以後,第一個位置就是最小的數了。然後重複進行,第 2 次遍歷並且比較後,第二個位置
排序之簡單選擇排序(Simple Selection Sort)
簡單選擇排序(Simple Selection Sort)基本思想: 首先在待排序序列中選擇最小的元素與序列的第一個位置元素交換,然後在剩餘序列中再找出最小的元素與第二個 位置元素交換。以此類推,直至第n-1個元素與第n個元素比較交換為止;(也可以理解為依次
算法3-排序-簡單選擇排序
sharp blog mage sel 一個數 http println for image 基本思想:在要排序的一組數中,選出最小的一個數與第一個位置的數交換; 然後在剩下的數當中再找最小的與第二個位置的數交換,如此循環到倒數第二個數和最後一個數比較為止。 publi
內排序-簡單選擇排序
pack args n-1 ring chang 算法 new 而後 int 算法思想: 每次從序列 (i=0.1.2.......n-1) 中選出一個i值作為最大或者最小值如此下去完成排序,具體做法是假定,i是最小或最大,再和i+1 .....n-1的值比較,以確定最大
選擇排序(Selection sort)
選擇排序算是對氣泡排序的一種改進:假設有n個待排列的資料,在第一輪遍歷中,仍進行n - 1次比較,遍歷的時候用當前數與當前獲得的最大數進行比較,而不是相鄰的資料進行比較,且僅進行一次資料交換。而氣泡排序在每一次比較的過程中,發現數據順序不一致就交換,資料交換的次數更多。選擇排序只需要用標記記住每一輪的最大數,
一、選擇排序(Selection sort)
一、選擇排序 選擇排序(Selection sort)是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的資料元素
資料結構之內部排序--簡單選擇排序
目錄 概要 演算法思想 演算法分析 穩定性與時間複雜度 Python程式碼清單 有什麼問題請聯絡我 概要 -IDE:Pycharm -Python版本:python3.x -演算法分類:內部排序->選擇類排序->簡單選擇排序 演算法思想 第
選擇排序---簡單選擇排序
將陣列第一個數字,依次和陣列後面的數字比較,將小的數字放到最前面。。 1 public class SelectSort { 2 public static void main(String[] args) { 3 int[] arr=new int[]