首页 > 12-09关于几种排序方式

12-09关于几种排序方式

一.选择排序

#include

//选择排序 //记录最小的那个数的索引值

//下面这个循环就是去寻找最小的那个数的index

//有比k对应的值更小的

//判断是否需要交换

//k和i对应的值交换

void selectsort(int array[],int counttimes){

    int k = 0;

    for (int i = 0; i < counttimes - 1; i++) {

        int  k = i ;

        for (int j =i +1; j < counttimes; j ++) {

            if (array[k] >array[j]) {

                k = j ;

            }

        }

        int temp;

        if (k != i) {

            temp = array[i];

            array[i] = array[k];

            array[k] = temp;

        }

    }

}

int main(int argc, const char * argv[]) {

    int array[] = {1,25,8,22,2};

    

    selectsort(array, 5);

    

    for (int i = 0; i < 5; i++) {

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

    }

    printf(" ");

    return 0;

}

二.快速排序

#include

 

void quicksort(int array[],int low,int high){

    int i = low;

    int j = high;

    

    int temp = array[low];

    

    if (low < high) {

        while (i

            while (i < j&& array[j] >= temp) {

                j--;

            }

            array[i] = array[j];

            

            while (i < j && array[i] <= temp) {

                i ++;

            }

            array[j] = array[i];

                    }

        array[i] = temp;

        

        quicksort(array,0,i-1);

        

        quicksort(array,i+1,high);

    }

}

 

int main(int argc,const char * argv[]){

    int array[] = {3,1,9,2,8,3,7,4};

    

    quicksort(array, 0, 7);

    

    for (int i = 0;i < 8;i++) {

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

    }

    printf(" ");

    return 0;

}

三.直接排序

#include

 

void insertsort(int  array[],int elementNum){

    int referenceNum = 0;

    

    for (int i = 1; i < elementNum; i ++) {

        referenceNum = array[i];

        

        int j =i - 1;

        

        for (; j>= 0; j--) {

            if (array[j] > referenceNum) {

                array[j+1] = array[j];

            }else{

                break;

            }

        }

        if (j+1 != i ) {

            array[j+1] = referenceNum;

        }

    }

}

int main(int argc,const char * argv[]){

    int array[] = {5,4,6,2,1};

    

    insertsort(array, 5);

    

    for (int i = 0; i < 5; i ++) {

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

    }

    printf(" ");

    return 0;

}

 

转载于:https://www.cnblogs.com/liuzhicen/p/5033812.html

更多相关:

  • 虽然循环可以工作,但跟踪嵌套循环也很困难。您可以考虑调用卷积定理来更容易地执行卷积。见here。在使用numpy的fft模块,您可以计算原始图像堆栈的n维离散Fourier变换,并将其乘以大小相同的核的n维Fourier变换(文档可找到here)。因为你的2D内核是一个3x3数组,它是一个3x3xz正方形的“支柱”,你可以用0填充这个...

  • 1. 一维数组 静态 int array[100];   定义了数组array,并未对数组进行初始化静态 int array[100] = {1,2};  定义并初始化了数组array动态 int* array = new int[100];  delete []array;  分配了长度为100的数组array 动态 int* a...

  • php 的json_encode能把数组转换为json格式的字符串。字符串没有缩进,中文会转为unicode编码,例如u975au4ed4。人阅读比较困难。现在这个方法在json_encode的基础上再进行一次美化处理。使人能方便阅读内容。   1. 使用 json_encode 输出 1

  • 首先准备如下社交图形数据:打开spark-shell;导入相关包:import org.apache.spark._ import org.apache.spark.graphx._ import org.apache.spark.rdd.RDD创建如上graph对象:// Create an RDD for the vertice...

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...