蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现
這次實現(xiàn)的是蠻力法中的兩個例子,選擇排序法和冒泡排序法,使用的編譯環(huán)境是vs2013,下面對這兩個算法做一個簡單介紹,然后是兩個算法的c++實現(xiàn)代碼。
選擇排序法比較的范圍是整個列表,每次掃描結(jié)束找出最小的一個元素一次放在前面的位置;而冒泡排序法每次是將相鄰兩個元素進行比較,將較大的元素放在后面,這樣一次掃描結(jié)束后就將當前最大的那個元素放在了列表的后面。
兩個排序方法的算法如下:
選擇排序法
SelectionSort(A[0....n-1])
//輸入:一個可排序數(shù)組A[0....n-1],
//輸出:升序排序的數(shù)組A[0....n-1]
for ? ?i ?
min ?
for j?
if A[j] ?< ?A[min] ? ? min ?
swap?A[i] and A[min];
該算法的輸入規(guī)模就是元素的個數(shù)n,基本操作就是if語句中比較的步驟:A[j] ?< ?A[min],比較的執(zhí)行次數(shù)為:(n-1)n/2,也就是Θ(n2)。
冒泡排序算法:
BubbleSort(A[0....n-1])
//輸入:一個可排序數(shù)組A[0....n-1]
//輸出:升序排序的數(shù)組A[0....n-1]
for ? ?i ?
for j?
if A[j+1]
swap?A[j+1]andA[j]
該算法的時間復(fù)雜度和選擇排序的時間復(fù)雜度一樣都是Θ(n2)。
#include
using namespace std;
void SelectionSort(int iSort[], int n);
void BubbleSort(int iSort[], int n);
void swap(int &a, int &b);
//-------------------主函數(shù)-------------------
int main(){
int a[];
for (int i = ; i < ; i++){
cin >> a[i];
}
getchar();
//SelectionSort(a, 10);
//這里傳遞的實參是數(shù)組名,
//也就是將地址進行傳遞,這樣被調(diào)用的函數(shù)就能夠改變數(shù)組a的值。
BubbleSort(a, );
for (int i = ; i < ; i++){
cout << " " << a[i];
}
getchar();
return ;
}
//-------------------選擇排序法-------------------
void SelectionSort(int iSort[],int n){
int i = , j = ,min=;
for (i = ; i < n - ; i++){
min = i;
for (j = i + ; j < n ; j++){
if (iSort[j]iSort[min])即可
min = j;
}
}
swap(iSort[i], iSort[min]);
}
}
//-------------------冒泡排序法-------------------
void BubbleSort(int iSort[], int n){
int i = , j = ;
for (i = ; i < n - ; i++){
for (j = ; j < n - - i; j++){
if (iSort[j + ] < iSort[j]){
swap(iSort[j + ], iSort[j]);
}
}
}
}
//-------------------交換元素-------------------
void swap(int &a, int &b){
int temp;
temp = a;
a = b;
b = temp;
}
C語言排序算法之簡單交換法排序,直接選擇排序,冒泡排序
C語言排序算法之簡單交換法排序,直接選擇排序,冒泡排序,最近考試要用到,網(wǎng)上也有很多例子,我覺得還是自己寫的看得懂一些. 簡單交換法排序 /*簡單交換法排序 根據(jù)序列中兩個記錄鍵值的比較結(jié)果來對換這兩 ...
Java-數(shù)據(jù)結(jié)構(gòu)與算法-選擇排序與冒泡排序
Java 選擇排序與冒泡排序 1.DataSorter.java public class DataSorter { //冒泡排序法 //主要思路:按升序排序,數(shù)組元素兩兩比較,大的立即排后面 pub ...
java 選擇排序與冒泡排序
選擇排序與冒泡排序的特點與區(qū)別 ++++++++++++++++++++++++++++++++++++++++++++++ 選擇排序 這一種簡單的排序方法,它的基本思想是:R[n]第一次從R[0]~ ...
java 選擇排序、冒泡排序、折半查找
public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11 ...
c/c++ 算法之快速排序法 冒泡排序法,選擇排序法,插入排序法
本文詳細敘述和實現(xiàn)了快速排序算法,冒泡排序 選擇排序 插入排序比較簡單,原理在這里不再詳述,直接用代碼進行了實現(xiàn). 快速排序法(quicksort)是目前所公認最快的排序方法之一(視解題的對象而定), ...
基本的排序算法C++實現(xiàn)(插入排序,選擇排序,冒泡排序,歸并排序,快速排序,最大堆排序,希爾排序)
博主歡迎轉(zhuǎn)載,但請給出本文鏈接,我尊重你,你尊重我,謝謝~http://www.cnblogs.com/chenxiwenruo/p/8529525.html特別不喜歡那些隨便轉(zhuǎn)載別人的原創(chuàng)文章又不給 ...
C# 冒泡排序法、插入排序法、選擇排序法
冒泡排序法 是數(shù)組等線性排列的數(shù)字從大到小或從小到大排序. 以從小到大排序為例. 數(shù)據(jù) 11, 35, 39, 30, 7, 36, 22, 13, 1, 38, 26, 18, 12, 5, 45, ...
關(guān)于Java中的選擇排序法和冒泡排序法
一,這種方法是直接傳入一個數(shù)組進行排序(選擇排序法) public static void selectSort(int arr[]){ for (int i = 0; i < arr.leng ...
常見排序算法總結(jié):插入排序,希爾排序,冒泡排序,快速排序,簡單選擇排序以及java實現(xiàn)
今天來總結(jié)一下常用的內(nèi)部排序算法.內(nèi)部排序算法們需要掌握的知識點大概有:算法的原理,算法的編碼實現(xiàn),算法的時空復(fù)雜度的計算和記憶,何時出現(xiàn)最差時間復(fù)雜度,以及是否穩(wěn)定,何時不穩(wěn)定. 首先來總結(jié)下常用內(nèi) ...
隨機推薦
UI4_UIImageView
// // ViewController.m // UI4_UIImageView // // Created by zhangxueming on 15/7/1. // Copyright (c) ...
一行很好的JS代碼
[].forEach.call($$("*"),function(a){ a.style.outline="1px solid #"+(~~(Math.rand ...
android Handler錯誤,不同的包Handler
1. import java.util.logging.Handler;這個包了會自動生成如下方法.當時還覺得和以前的不一樣了,本不在意. Handler handler1= new Handler( ...
markdown與textile之間互相轉(zhuǎn)換
markdown與textile之間互相轉(zhuǎn)換 redmine中默認使用的是textile那么從別的地方復(fù)制過來的markdown格式的內(nèi)容需要進行轉(zhuǎn)換 找到一款工具叫做pandoc http://jo ...
Django-RQ首頁、文檔和下載 - Django 和 RQ 集成 - 開源中國社區(qū)
Django-RQ首頁.文檔和下載 - Django 和 RQ 集成 - 開源中國社區(qū) Django-RQ 項目實現(xiàn)了 Django 框架和 RQ 消息隊列之間的集成.
CSS優(yōu)先級總結(jié)(轉(zhuǎn)載)
樣式的優(yōu)先級 多重樣式(Multiple Styles):如果外部樣式.內(nèi)部樣式和內(nèi)聯(lián)樣式同時應(yīng)用于同一個元素,就是使多重樣式的情況. 一般情況下,優(yōu)先級如下: (外部樣式)External styl ...
Ubuntu 安裝 Docker CE
注:本文轉(zhuǎn)載自 警告:切勿在沒有配置 Docker APT 源的情況下直接使用 apt 命令安裝 Docker. 準備工作 系統(tǒng)要求 Docker CE 支持以下版本的 ...
Git學(xué)習(xí)篇之git remote add origin錯誤
提示出錯信息:fatal: remote origin already exists. 解決辦法如下: 1.先輸入$?git?remote rm origin 2.再輸入$ git remote ad ...
Enterprise Library
https://msdn.microsoft.com/en-us/library/ff648951.aspx
避免string.Format方法的裝箱
我們知道,使用string.Format方法可能會存在裝箱的情況.比如如下: static void Main(string[] args) { string s = string.Format(&q ...
總結(jié)
以上是生活随笔為你收集整理的蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多用途互联网邮件扩展--MIME类型简介
- 下一篇: 聊聊HTTPS环境DNS优化:美图App