zoukankan      html  css  js  c++  java
  • 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)

    代码
    // Ch08sort.cpp : Defines the entry point for the console application.
    //默认是从小到大排序

    #include
    <time.h>
    #include
    <iostream>
    #include
    <iomanip>

    using namespace std;

    #define SIZE 10
    #define MAX 10000

    //直接插入排序080201
    //原理:每次将待排序的记录,按其关键字大小插入到前边已经排好序的子文件中的适当位置
    int InsertSort(int arr[],int len){
    int temp,j;
    for(int i=1;i<len;i++){
    if(arr[i]<arr[i-1]){
    temp
    =arr[i];
    j
    =i;
    do{
    arr[j]
    =arr[j-1];
    j
    --;
    }
    while(j>0&&arr[j-1]>temp);
    arr[j]
    = temp;
    }
    }
    return 0;
    }

    //交换排序---冒泡排序,快速排序
    //原理:两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。
    //冒泡排序080301
    int BubbleSort(int arr[],int len){
    int k,temp ;
    for(int i=0;i<len-1;i++){
    k
    = i;
    for(int j=i+1;j<len;j++){
    if(arr[j]<arr[k])
    k
    = j;
    }
    if(k!=i){
    temp
    = arr[i];
    arr[i]
    = arr[k];
    arr[k]
    = temp;
    }
    }
    return 0;
    }
    //快速排序080302
    int Partition(int arr[],int len,int i,int j){
    int pivot = arr[i];
    while(i<j){
    while(i<j&&arr[j]>=pivot){
    j
    --;
    }
    if(i<j){
    arr[i
    ++] = arr[j];
    }
    while(i<j&&arr[i]<=pivot){
    i
    ++;
    }
    if(i<j){
    arr[j
    --] = arr[i];
    }
    }
    arr[i]
    = pivot;
    return i;
    }
    int QuickSort(int arr[],int len,int low=0,int high=SIZE){
    int pivotpos;
    if(low<high){
    pivotpos
    = Partition(arr,len,low,high);
    QuickSort(arr,len,low,pivotpos
    -1);
    QuickSort(arr,len,pivotpos
    +1,high);
    }
    return 0;
    }



    //直接选择排序080401
    //原理:每一趟从待排序的记录中选出关键字最小的记录,顺序放到已排好序的子文件的最后
    int StraightSelect(int arr[],int len){
    int temp=0;
    int k;
    for(int i=0;i<len;i++){
    k
    =i;
    for(int j=k+1;j<len;j++){
    if(arr[j]<arr[k]){
    k
    = j;
    }
    }
    if(k!=i){
    temp
    = arr[k];
    arr[k]
    = arr[i];
    arr[i]
    = temp;
    }
    }
    return 0;
    }

    //桶排序

    //打印数组
    int printarr(int arr[],int len){

    for(int i=0;i<len;i++){
    if(i%10==0)
    cout
    <<endl;
    cout
    <<setw(4)<<arr[i]<<" ";
    }
    cout
    <<endl;
    return 0;
    }

    int main()
    {
    int arr[SIZE];
    int len = sizeof(arr)/sizeof(arr[0]);//SIZE
    srand( (unsigned)time( NULL ) );
    for(int i=0;i<len;i++){
    arr[i]
    =rand()%MAX;
    }
    printarr(arr,len);
    // StraightSelect(arr,len);
    // InsertSort(arr,len);
    // BubbleSort(arr,len);
    QuickSort(arr,len);
    printarr(arr,len);

    return 0;
    }

  • 相关阅读:
    怎样查看Oracle的数据库名称sid
    request.getRemoteAddr request.getRemoteHost()
    Oracle中添加自动编号的序列
    google chrome 快捷键
    MyEclipse快捷键大全( 再排版)
    Java正则表达式应用详解
    Spring3.1 Cache注解
    Java本周总结1.
    jquery ui 自动补全
    用字符串的length实现限制文本框长度
  • 原文地址:https://www.cnblogs.com/sdlypyzq/p/1915756.html
Copyright © 2011-2022 走看看