zoukankan      html  css  js  c++  java
  • 简单排序实现

    注:本篇文章简单实现了几种常见的排序,包括:冒泡排序,简单选择排序,插入排序,折半插入排序。

    #include<iostream>
    
    using namespace std;
    
    
    void swap(int& a,int& b){
        int temp;
        temp = a;
        a = b;
        b = temp;
    }
    
    void bubbleSort(int* arr,int length){  //冒泡排序 
        bool flag = false;
        for(int i=length-1;i>0;i--){
            for(int j=0;j<i;j++){
                if(arr[j]>arr[j+1]){
                    swap(arr[j],arr[j+1]);
                    flag = true;
                    cout<<"testing"<<endl; //测试交换次数 
                }
            }
            if(flag==false) break;
        }
    }
    
    void selectSort(int* arr, int length){ //简单选择排序 
        for(int i=0;i<length;i++){
            int minValue = arr[i];
            int    minValueIndex = i;
            for(int j=i;j<length;j++)  //找到最小元素 
                if(arr[j]<minValue){
                    minValue = arr[j];
                    minValueIndex = j; 
                }
                    
            swap(arr[minValueIndex],arr[i]); //交换 
        } 
    } 
    
    void insertSort(int*arr,int length){  //插入排序 
        int i,j;
        for(i=1;i<length;i++){
            int tmp = arr[i];
            for(j=i;j>0&&arr[j-1]>tmp;j--)
                arr[j] = arr[j-1]; 
            arr[j] = tmp;
        }    
    }
    
    void BiaryInsertSort(int* arr,int length){  //折半插入排序
        int i,j,temp,mid,low,high;
        for(i=1;i<length;i++){
            temp = arr[i];      //每次要插入的元素 
            low = 0;high = i-1; //查找插入位置的范围 
            while(low<=high){
                mid = (low + high) / 2;
                if(arr[mid]>temp)
                    high = mid - 1;
                else
                    low = mid + 1;  
            }
            for(j=i-1;j>=high+1;j--)   //插入位置下标为 high+1,即在 high 之后插入  
                arr[j+1] = arr[j];
            arr[j+1] = temp;          //此时,j == high  
        } 
    } 
    
    void shellSort(int* arr,int length){     //希尔排序(未实现) 
        
    } 
    
    void printIn(int* a,int length){
        for(int i=0;i<length;i++)
            cout<<a[i]<<'	'; 
    }
    
    int main(){
        int arr[5] = {1,3,2,6,5};
        //bubbleSort(arr,5);
        //selectSort(arr,5);
        //insertSort(arr,5);
        BiaryInsertSort(arr,5);
        printIn(arr,5);
        return 0;
    } 
    所有博文均为原著,如若转载,请注明出处!
  • 相关阅读:
    Smarty简单配置代码
    5.27权限练习
    PHP函数中的变量
    PHP文件格式数组
    PHP文件操作
    MongoCola MongoDB 客户端管理工具
    使用NPOI库导入导出EXCEL
    MVC Filter使用
    MVC设计及使用拓展
    C# 基础·语法篇
  • 原文地址:https://www.cnblogs.com/zpcoding/p/10175305.html
Copyright © 2011-2022 走看看