选择排序与冒泡排序的区别与联系

选择排序:

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

int main()

{

int a[7]={3,7,5,2,4,6,8};

int i;

int j;

int temp;

for(i=0;i<7;i++)

for(j=i+1;j<7;j++)

{

if(a[i]<a[j])

{

temp=a[i];

a[i]=a[j];

a[j]=temp;

}

}

for(i=0;i<7;i++)

printf("%d  ",a[i]);

printf("\n");

system("pause");

}

冒泡排序:

#include<stdio.h>

#include<time.h>

#include<stdlib.h>

int main()

{

int a[7]={3,7,5,2,4,6,8};

int i;

int j;

int temp;

for(i=0;i<7;i++)

{

for(j=0;j<7-i-1;j++)

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

}

for(i=0;i<7;i++)

printf("%d  ",a[i]);

printf("\n");

system("pause");

}

主要在于循环的设置上,两个的循环都是两个嵌套,但是冒泡的是比较任意相邻的两个元素,但是选择排序是与第i个数据进行比较,然后交换。是两种比较简单的排序方法,但是时间复杂度O(n2),比较耗时间

时间: 2024-12-15 09:43:50

选择排序与冒泡排序的区别与联系的相关文章

选择排序与冒泡排序的区别

选择排序: 假设变量都定义过 //外循环 for(k=0;k<n-1;k++){                         //n是输入的数组中元素的个数,显示假设a[index]最小,0<k<n-1 index=k;//设初值为0 for(i=k+1;i<n;i++){ //内循环 if(a[i]<a[index])                       //又假设a[i]是最小值 index=i; } temp=a[index]; a[index]=a[k];

java 选择排序与冒泡排序

选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~R[n-1]中选取最小值,与R[0]交换;第二次从R[1]~R[n-1]中选取最小值,与R[1]交换;...., 第i次从R[i-1]~R[n-1]中选取最小值,与R[i-1]交换;.....,第n-1次从R[n-2]~R[n-1]中选取最小值,与R[n-2]交换;总共通过n-1次,得到一个按排序码

选择排序与冒泡排序

这是两种非常相似的算法,都是两个嵌套循环.之前看网上很多人将选择排序当冒泡排序用,我怕以后混了,记录一下. 选择排序 /** * 选择排序 * @Title: getSelectSort * @Description: TODO(这里用一句话描述这个方法的作用) * @param @param arr * @param @return 设定文件 * @return int[] 返回类型 * @throws */ public static int[] getSelectSort(int[] ar

算法——蛮力法之选择排序和冒泡排序c++实现

这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出最小的一个元素一次放在前面的位置:而冒泡排序法每次是将相邻两个元素进行比较,将较大的元素放在后面,这样一次扫描结束后就将当前最大的那个元素放在了列表的后面. 两个排序方法的算法如下: 选择排序法 SelectionSort(A[0....n-1]) //输入:一个可排序数组A[0....n-1],

图形化排序算法比较:快速排序、插入排序、选择排序、冒泡排序

图形化排序算法比较:快速排序.插入排序.选择排序.冒泡排序

算法效率的分析--【以选择排序与冒泡排序为基础】

在前面我们实现了选择排序与冒泡排序的具体实现,现在我们从数学的角度分析下算法的效率问题: 首先我们把两种排序算法的概念重温一遍: 选择排序:在每一轮中,找出最小的元素放在他最终的位置.挺起来有些别扭,我们举个实例: eg:        8, 5,1, 20, 6, 3 1ed······  1, 5,8, 20, 6, 3 2ed······  1, 3, 8,20, 6,5 3ed······  1, 3,5, 20, 6, 8 4ed······  1, 3,  5, 6,  20,8 5

C语言排序算法之简单交换法排序,直接选择排序,冒泡排序

C语言排序算法之简单交换法排序,直接选择排序,冒泡排序,最近考试要用到,网上也有很多例子,我觉得还是自己写的看得懂一些. 简单交换法排序 1 /*简单交换法排序 2 根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置 3 交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动 4 不稳定 5 */ 6 #include<windows.h> 7 #include<stdio.h> 8 void main(){ 9 int i,j,arr[10

冒泡排序,选择排序,插入排序的区别

#include<stdio.h> int swap(int *a,int *b) { int t=*a; *a=*b; *b=t; } /* 冒泡排序的原理:每次在无序队列里将相邻两个数依次进行比较,将小数调换到前面, 逐次比较,直至将最大的数移到最后.最将剩下的N-1个数继续比较,将次大数移至倒数第二位. 依此规律,直至比较结束. 冒泡排序的代码如下: */ void bubble_sort(int a[], int n){ int i,j; for(i=0;i<n-1;++i) f

选择排序与冒泡排序区别与比较

https://blog.csdn.net/weixin_38277423/article/details/70304120 区别主要在交换的方式上 每一轮都把最大或最小的元素筛选出来放在相应的位置上 这是相同的 但是 对于每一轮 比如第一轮 要把1~n 中最大的那个放到n这个位置 冒泡法每次比较和移动相邻的两项 而选择排序每次交换当前项和第n项 我把代码写出来你就懂了: 冒泡: for i:=1 to n-1 do if (a[i]>a[i+1]) then swap(i,i+1); 选择: