冒泡与选择排序

原创 2006年06月15日 12:06:00

#include <iostream>
#include <ctime>
using namespace std;
void mopsort(int a[],int n)        //冒泡排序,每找出一个较大值都要交换,最值自然而然地去
{         //了最前或最后.
 int i,j,min;
 for(i=0;i<n-1;i++)            //冒泡与选择的区别在于冒泡中两两元素间的交换比较多.
  for (j=0;j<n-i-1;j++)     //相同点在于每次外层循环都找到一个最值.
  {
   if (a[j]>a[j+1])
   {
    min=a[j];
    a[j]=a[j+1];
    a[j+1]=min;
   }
  }
}
void selsort(int a[],int n)         //选择排序,每轮循环找出一个最值,将它放到第一个位置.
{
 int i,j,k,min;

 for (i=0;i<n-1;i++)            //一次i++就是找出并交换一个最值.
 {
  k=i;
  for (j=i+1;j<n;j++)        //找出一个最值. 找出较大值并不交换.
   if (a[k]>a[j])k=j;
   if(k!=i)               //将这个最值放在最前位置
   {
    min=a[i];
    a[i]=a[k];
    a[k]=min;
   }
 }
}
int main(void)
{
 const int n=10;
 int a[n],i;
 srand(time(0));                  //srand用来初始化一个全局变量,作用rand随机函数的种子.用1做参数重新初始化.
 for ( i=0;i<n;i++)
 {
  a[i]=rand()%100;         //rand使用srand产生的种子,生成一个两字节的整数
  cout<<a[i]<<endl;
 }
 mopsort(a,n);
 cout<<"after mop sort:"<<endl;
 for (i=0;i<n;i++)cout<<a[i]<<endl;

 selsort(a,n);
 cout<<"after selecttion sort:"<<endl;
 for (i=0;i<n;i++)cout<<a[i]<<endl;
    return 0;
}

基础排序总结(冒泡排序、选择排序、插入排序)

1、冒泡排序1.1、简介与原理冒泡排序算法运行起来非常慢,但在概念上它是排序算法中最简单的,因此冒泡排序算法在刚开始研究排序技术时是一个非常好的算法。冒泡排序原理即:从数组下标为0的位置开始,比较下标...
  • u013249965
  • u013249965
  • 2016年09月18日 16:08
  • 2999

各种排序总结(一)之--—冒泡排序、选择排序、快速排序

各种排序总结——冒泡排序、选择排序、快速排序        1、冒泡排序是比较经典的排序方法,是一种用时间换空间的排序方法。我总结了一下它的特点:(1)它的时间复杂度是;(2)每一趟相邻元素两两比较完...
  • xinyu2015
  • xinyu2015
  • 2015年11月04日 16:36
  • 4121

排序算法(1)-插入,选择,冒泡

排序算法作为许多程序的中间步骤,是计算机科学中的一个基本操作。 一、问题描述     排序算法输入的是n个数的一个序列,输出为输入的一个排列,满足a1’ 简言之就是输入一个序列,输出的是这个数组...
  • H2008066215019910120
  • H2008066215019910120
  • 2014年07月16日 09:58
  • 1136

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

初学java语言,排序算法绝对是我们拿来实践的好例子。而在排序中有两种简单的算法是绕不开的,就是冒泡排序与选择排序。下面来分别讲解: 冒泡算法:假设数组长度为lenght,冒泡算法的外循环为leng...
  • tiantianhuanle
  • tiantianhuanle
  • 2016年10月15日 21:27
  • 5700

排序算法解析——冒泡排序、选择排序、快速排序

时间复杂度是度量算法执行的时间长短,而空间复杂度是度量算法所需存储空间的大小。 算法的时间复杂度记做:T(n)=O(f(n))     在计算时间复杂度的时候,先找出算法的基本操作,然后根...
  • sdwuyulunbi
  • sdwuyulunbi
  • 2012年12月14日 11:04
  • 11192

(交换)冒泡和(选择)简单选择排序比较

(交换)冒泡和(选择)简单选择排序比较: 冒泡排序法的基本思路是:将相邻位置上的关键字进行比较,如果为逆序,则交换,否则继续往下比较,直到序列已经排好。所以,在这个过程中,元素问的比较次数应大于或等...
  • Johnny0991
  • Johnny0991
  • 2015年05月19日 18:03
  • 1175

java简单实现冒泡 快速 选择排序

package com.排序;public class 冒泡排序 {/* * 冒泡排序,就是将第一个记录的值和第二个记录的值进行比较 * 如果,前面的值比后面的值大,则交换位置 * 反之,...
  • xiongxianze
  • xiongxianze
  • 2017年04月18日 20:06
  • 628

冒泡,去重,快速排序选择排序几种算法

arr =[‘9’,’8’,’7’,’6’,’5’,’4’,’3’,’2’,’1’,’0’]冒泡排序有两个循环外循环循环一次能把乱序数组里的最大值找出来放在相应的位置,内循环循环一次是执行外循环找到这...
  • chenjieone
  • chenjieone
  • 2017年02月11日 18:25
  • 443

冒泡,选择,插入排序的效率比较

冒泡排序 思想:每次将最大的数字移动到数组的最后面。比较复杂度和操作复杂度都较高。 代码实现 public static void bubbleSort(int[] arr) { ...
  • mz690048mz
  • mz690048mz
  • 2016年02月26日 01:27
  • 249

【算法】冒泡排序与选择排序的递归实现

1 冒泡排序 1 冒泡排序: void bubbleSort(int *data,int start,int end) { if (start < end) { int te...
  • chenglibin1988
  • chenglibin1988
  • 2013年05月19日 15:09
  • 6371
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:冒泡与选择排序
举报原因:
原因补充:

(最多只允许输入30个字)