选择排序 冒泡排序 插入排序

1.选择排序

每一次找出最小的值,放在最前面的位置,一个一个安置

//选择排序
#include<iostream>
#include<climits>
using namespace std;
template<class T>
void gcd(T a[],int n){
    int mix,temp;
    for(int i=0;i<n-1;i++){
        mix=i;
        for(int j=i+1;j<n;j++)
            if(a[j]<a[mix]) mix=j;
            if(i!=mix){
                temp=a[i];
                a[i]=a[mix];
                a[mix]=temp;
            }
    }
}
int main()
{
     int a[10] = {43, 65, 4, 23, 6, 98, 2, 65, 7, 79};
     gcd(a,10);
     for(int i=0;i<10;i++) cout<<a[i]<<" ";
     cout<<endl;
} 

2.冒泡排序

遍历数组,发现前面的数字大于自己就换位置

//冒泡排序
#include<iostream>
using namespace std;
void swap(int &a,int &b ){
    int tmp;
    tmp=a;
    a=b;
    b=tmp;
}
void gcd(int *a,int n){
    for(int i=0;i<n;i++)
    for(int j=0;j<n-1;j++){
        if(a[j]>a[j+1]) swap(a[j],a[j+1]);
    }
}
int main()
{
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++) cin>>a[i];
    gcd(a,n);
    for(int i=0;i<n;i++) cout<<a[i]<<" ";
    cout<<endl;
}

3.插入排序

遍历数组,新遍历的数字,寻找合适的位置插进去

//插入排序
#include<iostream>
using namespace std;

int main()
{
int a[]={1,3,1,2,0,4,5,2,6,2,0};
        int n=10;
        int i,j,temp;//用来暂存
        for(i=1;i<n;i++){
            temp=a[i];
            j=i-1;
            for(;j>=0&&a[j]>temp;j--)//找到tmp插入的位置
                a[j+1]=a[j];
//            if(j!=i-1)//j等于i-1的话自然不需要填补了
                a[j+1]=temp;
    }

    for(int i=0;i<10;i++) cout<<a[i]<<" ";

    }

原文地址:https://www.cnblogs.com/helloworld2019/p/10351161.html

时间: 2024-11-03 12:27:50

选择排序 冒泡排序 插入排序的相关文章

选择排序、插入排序、冒泡排序python实现

选择排序的时间复杂度为O(n^2),是不稳定的排序 冒泡排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),平均情况下为O(n^2),是稳定的排序 插入排序的时间复杂度最好情况下为O(n),最坏情况下为O(n^2),,平均情况下为O(n^2),是稳定的排序 1.选择排序 def selection(lista): leng=len(lista); for i in range(0,leng): index=i; min=lista[i]; for j in range(i,leng)

JavaScript算法(冒泡排序、选择排序与插入排序)

冒泡排序.选择排序与插入排序复杂度都是指数级别的,放在一起说吧. 介绍一些学习这三个排序方法的比较好的资料.冒泡排序看<学习JavaScript数据结构与算法>介绍的冒泡排序,选择排序看<计算机科学概论(第三版)>里介绍的选择排序,插入排序看<计算机科学概论(第11版)>里介绍的插入排序, 通过这三份资料弄明白实现原理之后,最后看<学习JavaScript数据结构与算法>一书里的JS实现代码. 嗯,这本书里都有现成代码,就不在这儿写了,关键是弄清楚原理,然后

各种常见的排序,冒泡排序,选择排序,插入排序,希尔排序,堆排序,快速排序,基数排序,桶排序

各种常见的排序 要开始找工作了,把以前学的各种小知识复习一遍,以下是各种常见的排序的简单实现(冒泡排序,选择排序,插入排序,希尔排序,堆排序,快速排序,基数排序,桶排序),至于原理就不写出来了,代码比较简单,看一下就懂,再不行可以随意找本书或百度! #include <iostream> using namespace std; // 冒泡 void BubbleSort(int data[], int length) { if(data == NULL || length <= 0)

冒泡排序,选择排序,插入排序

从今天开始希望自己的博客可以持续的更新起来,由于本人能力有限,所以有些内容可能会有疏漏或者不全面,希望大家可以指出来,让我们一起学习,一起进步. 今天的内容是最简单的三个排序算法,冒泡排序,选择排序,插入排序,它们的时间复杂度都是O(N^2). 冒泡排序:首先第一个数与第二个数比较,如果前面的大于后面的就交换两个数,然后第二个与第三个比较,直到比较到最后,此时最后一个数为数组最大值,然后循环次步骤,第二次比较到倒数第二位,这样经过两次循环最后两位就排好了,经过N次循环,数组就拍好了 选择排序:从

Java排序算法分析与实现:快排、冒泡排序、选择排序、插入排序、归并排序(二)

一.概述: 上篇博客介绍了常见简单算法:冒泡排序.选择排序和插入排序.本文介绍高级排序算法:快速排序和归并排序.在开始介绍算法之前,首先介绍高级算法所需要的基础知识:划分.递归,并顺带介绍二分查找算法. 二.划分: 划分是快速排序的前提,即把数据分为两组,大于特定值的数据在一组,小于特定值的数据在另一组.快速排序即是由划分和递归操作来完成的. (1)原理: 定义一个阈值,分别从最左面和最右面向中间遍历元素,左面找到一个大于阈值的数据便停止,右边找到一个小于阈值的数据便停止,如果此时左右两边都还没

常见排序算法的实现(归并排序、快速排序、堆排序、选择排序、插入排序、希尔排序)

这篇博客主要实现一些常见的排序算法.例如: //冒泡排序 //选择排序 //简单插入排序 //折半插入排序 //希尔排序 //归并排序 //双向的快速排序 //单向的快速排序 //堆排序 对于各个算法的实现原理,这里不再多说了,代码中注释较多,结合注释应该都能理解算法的原理,读者也可自己google一下.另外,注释中有很多点,比如边界条件.应用场景等已经用 * 标记,* 越多,越应该多注意. 下面是实现: //冒泡排序 void BubbleSort(int *arr, int n) { if(

Java选择排序,插入排序,快速排序

public class Test { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5 }; // 选择排序(a); // 插入排序(a); quicksort(a, 0, a.length - 1); System.out.print("排序后:"); for (int n : a) { System.out.print(n + " "); } } static void 选择排

算法—比较两种排序算法:选择排序和插入排序

现在我们已经实现了两种排序算法,我们很自然地想知道选择排序和插入排序哪种更快.这里我们第一次用实践说明我们解决这个问题的办法. 性质:对于随机排序的无重复主键的数组,插入排序和选择排序的运行时间是平方级别的,两者之比应该是一个较小的常数. 例证:这个结论在过去的半个世纪中已经在许多不同类型的计算机上经过了验证.在1980年本书第一版完成之时插入排序就比选择排序快一倍,现在仍然是这样,尽管那时这些算法将10万条数据排序需要几个小时而现在只需要几秒钟.在你的计算机上插入排序也比选择排序快一些吗?可以

01. Java的经典排序--选择排序--冒泡排序--折半查找(二分查找)

Java的经典排序--选择排序--冒泡排序--折半查找 选择排序 选择排序 3 2 1 5 8 0 1 3 2 5 8 1 1 2 3 5 8 2 1 2 3 5 8 3 1 2 3 5 8 public static void main(String[] args) { int[] arr={3,2,1,5,8}; selectSort(arr); for(int i = 0 ; i < arr.length ; i ++){ System.out.println(arr[i]) ; } }