8 桶排序

非比较排序: 比较排序是基于输入元素间的比较。任意一个比较排序算法在最坏情况下需要比较的次数至少为nlogn。所以说快速排序,堆排序,归并排序都是渐进最优的排序算法。他们的最坏情况时间复杂度为O(nlogn)。 非比较排序不是基于元素间比较的。包括:桶排序,基数排序,计数排序。桶排序:属于非原址排序。(1)思路:假定:输入是由一...
分类: 其他 发布时间: 01-26 22:47 阅读次数: 0

9 计数排序

计数排序是一个类似于桶排序的排序算法,其优势是对已知数量范围的数组进行排序。它创建一个长度为这个数据范围的数组C,C中每个元素记录要排序数组中对应记录的出现次数。非原址排序。(1)思路:计数排序算法的基本思想是对于给定的输入序列中的每一个元素x,确定该序列中值小于x的元素的个数。一旦有了这个信息,就可以将x直接存放到最终的输出序列的正确位置上。例如,如果输入序列中只有17个元素的值小...
分类: 其他 发布时间: 01-26 22:46 阅读次数: 0

strncpy发生stack corruption detected(-fstack-protector)栈溢出

代码:char line[MAX] = {0};strncpy(line,pBeginObj,(ptemp - pBeginObj + 1));log如下:解释:char *strncpy(char *dest, const char *src, int n)把src所指向的字符串中以src地址开始的前n个字节复制到dest所指的数组中0x746d498e86 -...
分类: 其他 发布时间: 01-26 22:46 阅读次数: 0

将assets文件转为byte[]

assets文件在apk安装到手机后,在手机里没有绝对路径,只有相对路径!!!代码:animRes.m_AnimSklFile = readFileFromAssets(this.getActivity(),null,"animation.skl");animRes.m_AnimFiles[0] = readFileFromAssets(this.getActivity(),nul...
分类: 其他 发布时间: 01-26 22:46 阅读次数: 0

三个线程轮流执行顺序打印ABC

public class ThreadThreadp{ public static String TAG = "ThreadThreadp"; private int flag = 0; public synchronized void printa() throws InterruptedException{ while(true){ ...
分类: 其他 发布时间: 01-26 22:46 阅读次数: 0

Fatal:can not read section '.dynamic'

出现过如下编译错误问题:Fatal:can not read section '.dynamic'target C++: com.qti.chi.override_32 <= vendor/qcom/proprietary/chi-cdk/vendor/chioverride/default/chxusecaseutils.cppninja:build stopped: subc...
分类: 其他 发布时间: 01-26 22:45 阅读次数: 0

设置loglevel,封装__android_log_print()

typedef struct tag_LOG{ int logLevel;}LOG, *LPLOG;static LOG gLog = {0};#define LOGE_LEVEL 1#define LOGW_LEVEL 2#define LOGI_LEVEL 3#define LOGD_LEVEL 4#define LOGV_LEVEL 5#ifdef ...
分类: 其他 发布时间: 01-26 22:45 阅读次数: 0

adb logcat命令

[0 adb logcat --help]adb logcat --help-s:设置输出日志的标签, 只显示该标签的日志-f:将日志输出到文件(手机上)-v:设置日志的输出格式, 注意只能设置一项-g:查看日志缓冲区信息-G:设置日志缓冲区[1 adb logcat -s]adb logcat -s LogUtiladb logcat -s LogUti...
分类: 其他 发布时间: 01-26 22:44 阅读次数: 0

[JNI]Local Reference不可存入到一个static变量里,Global Reference可存入一个static变量里

来看下如下代码的stringClass:/* This code is illegal */jstring MyNewString(JNIEnv *env, jchar *chars, jint len){ static jclass stringClass = NULL; jmethodID cid; jcharArray elemArr; jstrin...
分类: 其他 发布时间: 01-26 22:44 阅读次数: 0

Java和C++中的volatile

1.Java中的volatile:在Java内存模型中,线程共享的资源放在主存中,每个线程同时拥有自己的本地内存。而本地内存中存放了被该线程使用到的主内存变量的拷贝。线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。由此可能导致线程间无法读取变量的最新状态。被volatile修饰的变量在修改时会被强制写到主存中,从而保证该变量对其他线程的可见性。2.C++中的volat...
分类: 其他 发布时间: 01-26 22:43 阅读次数: 0

[JNI]FindClass

FindClassjclass FindClass(const char* name)返回一个类的引用env->FindClass("java/lang/String");env->FindClass(HELLOLIBS_JNI_CLASS_NAME);#define HELLOLIBS_JNI_CLASS_NAME "com/test/hello_libs/...
分类: 其他 发布时间: 01-26 22:43 阅读次数: 0

[JNI]GetStringLength与GetStringUTFLength的区别

代码:jclass strCls = env->FindClass("java/lang/String");jmethodID mid = env->GetMethodID(strCls,"<init>","([C)V");jstring strUnicode = env->NewStringUTF("aaa"); jint len = env-&...
分类: 其他 发布时间: 01-26 22:43 阅读次数: 0

__attribute__((aligned))

__attribute__ 语法的来源GNU C 的一大特色就是__attribute__ 机制。attribute可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。attribute 语法格式为: attribute ((attribute-list))当__attribute...
分类: 其他 发布时间: 01-26 22:43 阅读次数: 0

[JNI]截断jboolean类型问题

jboolean是一个8位的unsigned类型,值范围为0~255.0对应JNI_FALSE,1~255对应JNI_TRUE.对于32位或16位的变量a赋值给jboolean时,如果a的低8位为0会出现逻辑问题.代码:void print(jboolean condition){ if (condition) { printf("true\n"); ...
分类: 其他 发布时间: 01-26 22:42 阅读次数: 0

__user说明

# define __user __attribute__((noderef, address_space(1)))__user这个特性,即__attribute__((noderef, address_space(1))),是用来修饰一个变量的,这个变量必须是非解除参考(no dereference)的,即这个变量地址必须是有效的,而且变量所在的地址空间必须是1,即用户程序空间的。...
分类: 其他 发布时间: 01-26 22:42 阅读次数: 0

[JNI]缓存域ID(Filed ID)和方法ID(Method ID)

下面举例说明了没有缓存域ID可能带来的bug:class C { private int i; native void f();}(1)不缓存域ID:1) 获取对象的类,GetObjectClass.2) 找出变量i的域ID,GetFieldID.3) 基于域ID获取域值,GetIntField.// No field IDs cached.JNIE...
分类: 其他 发布时间: 01-26 22:42 阅读次数: 0

[JNI]Accessing Arrays

分两种情况:(1)基本元素数组(2)对象数组(1)基本元素数组(i)拷贝基本元素数组:JNIEXPORT jint JNICALL Java_IntArray_sumArray(JNIEnv *env, jobject obj, jintArray arr){ jint buf[10]; jint i, sum = 0; (*env)->...
分类: 其他 发布时间: 01-26 22:42 阅读次数: 0

[JNI]jni层设置对象数组到java层

java层:class RECT{ int left; int top; int right; int bottom;} public class HAND{ public RECT[] prtHands; public HAND(){ }}jni层:#define HAND_JNI_...
分类: 其他 发布时间: 01-26 22:41 阅读次数: 0

[JNI]java层传递byte[][]到jni层

java层:public class ANIM{ public byte[][] mAnim;}ANIM anim = new ANIM();anim.mAnim = new byte[2][];anim.mAnim[0] = new byte[512];anim.mAnim[0][0] = 1;anim.mAnim[1] = new byte[512];anim.mA...
分类: 其他 发布时间: 01-26 22:41 阅读次数: 0

网络编程中read使用错误引起的崩溃

网络编程中,基础接口read的使用要格外注意,先上有问题的代码:int socketTCP::readn(char *buf,size_t len){ int ret = 0; size_t left = len; while(left>0){ ret = ::read(sock_,buf,len); if(ret<0){ return -1; } if(ret==0){
分类: 其他 发布时间: 01-26 22:40 阅读次数: 0