#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <string.h> void _qsort(void*, size_t, size_t);
void vswap(void*, void*, size_t); int main(void)
{
int int_1[] = {
85,9,32,64,12,7,9,51,2,63
};
size_t len = sizeof(int);
/*char int_1[] = {
85,9,32,64,12,7,9,51,2,63
};
size_t len = sizeof(char);*/ size_t count = sizeof(int_1)/len;
void *p_1 = malloc(count*len);
memcpy(p_1, int_1, count*len); _qsort(p_1, count, len);
printf("ALL Done-----------------\n"); size_t total_len = len * count;
int i = 0;
for (; i < total_len; ++i)
{
if(i%len != 0)
{
continue;
}
printf("%d,", *((int *)(p_1+i)));
//printf("%d\n", *((char *)(p_1+i)));
}
printf("\n"); }
void _qsort(void *p, size_t count, size_t len)
{
if(count == 2)
{
if( *((int*)(p)) > *((int*)(p+len)) )
{
vswap(p, p+len, len);
}
}
if(count > 2)
{
int mid_edge = (count + count%2)/2 - 1;
size_t total_len = len * count;
void *p_t = malloc(total_len);
int i = 0;
int index = 0;
int l_count = 0;
int r_count = 0;
for (; i < total_len; ++i)
{
if(i%len != 0)
{
continue;
}
if(i/len == mid_edge)
{
continue;
}
if( *((int*)(p+i)) <= *((int*)(p+(mid_edge*len))) )
{
memcpy(p_t+(index*len), p+i, len);
printf("l :%d, val :%d\n", index, *((int*)(p+i)));
index++;
l_count++;
}
}
//set mid
memcpy(p_t+(index*len), p+(mid_edge*len), len);
printf("mid_edge :%d, val :%d\n", index, *((int*)(p+(mid_edge*len))));
index++;
//set right
i = 0;
for (; i < total_len; ++i)
{
if(i%len != 0)
{
continue;
}
if(i/len == mid_edge)
{
continue;
}
if( *((int*)(p+i)) > *((int*)(p+(mid_edge*len))) )
{
memcpy(p_t+(index*len), p+i, len);
printf("r :%d, val :%d\n", index, *((int*)(p+i)));
index++;
r_count++;
}
} memcpy(p, p_t, total_len);
free(p_t);
//recursive
printf("%d\n", l_count);
printf("%d\n", r_count);
printf("Done-----------------\n");
_qsort(p, l_count, len);
_qsort(p+((l_count+1)*len), r_count, len);
}
} void vswap(void *p_1, void *p_2, size_t len)
{
void *p_t = malloc(len);
memcpy(p_t, p_1, len);
memcpy(p_1, p_2, len);
memcpy(p_2, p_t, len);
free(p_t);
}

[C][代码实例]整型数组二分排序的更多相关文章

  1. java 整型数组基本排序,冒泡,快速选择,插入,归并

    在学java泛型,于是把排序拿来练练手了 import java.util.Arrays; public class GenericArraySort { public static void mai ...

  2. Java整型数组的最大长度到底有多长?

    Java整型数组的最大长度到底有多长? 今天上网查了一下,各种说法都有,这个问题似乎总困扰我们Java初学者,无奈,只好自己试了一下,以下是我的测试代码,如果有错误,还望不吝赐教! 使用eclipse ...

  3. Android jni 编程3(对基本类型一维整型数组的操作)总结版

    主要学习资料:黑马程序员的NDK方法使用(生产类库so)              jni编程指南中文版(已上传至博客园) 博主文章(它使用的是VS和eclipse联合开发):http://www.c ...

  4. Android jni 编程2(对基本类型一维整型数组的操作)

    参考教程和这位博主的对一维数组的处理,主要包括以下三种类型: //传入一维数组,无返回值 public native void arrayEncode(int[] arr); //传一个一维数组和数组 ...

  5. 剑指offer40:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字

    1 题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 2 思路和方法 (1)异或:除了有两个数字只出现了一次,其他数字都出现了两次.异或运算中,任 ...

  6. 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和

    057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和 本文知识点:求整型数组的数组元素的元素值累加和 案例:求整型数 ...

  7. 实验12:Problem H: 整型数组运算符重载

    Home Web Board ProblemSet Standing Status Statistics   Problem H: 整型数组运算符重载 Problem H: 整型数组运算符重载 Tim ...

  8. c# 计算一个整型数组的平均

    一个整型数组的平均: class Program { static void Main(string[] args) { ,,,,,,,,,}; double avg= GetAvg(array); ...

  9. Android jni 编程4(对基本类型二维整型数组的操作)

    Android jni 编程 对于整型二维数组操作: 类型一:传入二维整型数组,返回一个整型值 类型二:传入二维整型数组,返回一个二维整型数组 声明方法: private native int Sum ...

随机推荐

  1. Django眼中的MVC

    (转载)http://www.cnblogs.com/michaely/p/3340087.html MVC是众所周知的模式,即:将应用程序分解成三个组成部分:model(模型),view(视图),和 ...

  2. JS创建对象之构造函数模式

    function Person(name, age, job) { this.name = name; this.age = age; this.job = job; this.sayName = f ...

  3. Jenkins和pipeline

    Jenkins https://jenkins.io/index.html The leading open source automation server, Jenkins provides hu ...

  4. luogu 2014 选课 树上背包

    树上背包 #include<bits/stdc++.h> using namespace std; ; const int inf=0x3f3f3f3f; vector<int> ...

  5. 第19月第20天 UITableView:改变 TableHeaderView 的高度 获取目录大小

    1.UITableView:改变 TableHeaderView 的高度 CGRect newFrame = headerView.frame; newFrame.size.height = newF ...

  6. Django REST framework 第三章 CBV

    从介绍Django快开始,我们就一直在使用FBV的方式来撰写代码,二者本质上并没有太大的区别,然而到了REST framework,更会倾向于用CBV来写API的视图,后面会看到这个方式的强大,它允许 ...

  7. L - Tic-Tac-Toe FZU - 2283 (思维)

    题目链接: L - Tic-Tac-Toe FZU - 2283 题目大意:两个人下棋,一共是三步棋,第一个人下一步,第二个人下一步,第三个人下一步,然后问你在两个人在都足够聪明的条件下,第一个人能否 ...

  8. Struts2-052 漏洞复现

    s2-052漏洞复现 参考链接: http://www.freebuf.com/vuls/147017.html http://www.freebuf.com/vuls/146718.html 漏洞描 ...

  9. java.lang.RuntimeException: Cannot create a secure XMLInputFactory 异常处理

    背景:本人在近日的webservice   CXF接口的编写调试过程中,发现一个很奇怪的现象--我在本地对接口进行往返请求时完全没有问题,不管是main方法直接调用还是业务场景里调用都无问题,在其他同 ...

  10. 【NLP CS224N笔记】Lecture 2 - Word Vector Representations: word2vec

    I. Word meaning Meaning的定义有很多种,其中有: the idea that is represented by a word,phrase,etc. the idea that ...