对字符数组按ASCII码排序的问题
#include<stdio.h>
#include<stdlib.h>
typedef struct SqList{
int *elem;
int length;
}SqList;
/**************************快***********速**************排**************序************************/
int Partition(SqList &L,int low,int high){
int pivotkey = L.elem[low];
while(low<high){
while(L.elem[high]>pivotkey)high--;
L.elem[low] = L.elem[high];
while(L.elem[low]<pivotkey)low++;
L.elem[high] = L.elem[low];
}
return low;
}
void QSort(SqList &L,int low,int high){
if(low<high)
{int pivotloc = Partition(L,low,high);
QSort(L,low,pivotloc-1);
QSort(L,pivotloc+1,high);
}
}
void QuickSort(SqList &La){
QSort(La,0,La.length-1);
}
/**************************二***********分**************搜**************索************************/
int BinarySearch(SqList &La,int key){
int middle,left,right;
left = 0;right = La.length-1;
middle = (left + right)/2;
while(left<right){
if(key == La.elem[middle])return middle+1;
while(key>La.elem[middle]){
left = middle;middle = (left + right)/2;
}
while(key<La.elem[middle]){
right = middle;middle = (left + right)/2;
}
}
return -1;
}
void main(){
SqList La;
char n[5] = {'1','2','3','4','5'}; //建立一个字符数组,用于对顺序表初始化
La.elem = (int *)n;
La.length = 5;
QuickSort(La); //目的是按ASCII码对顺序表中元素快速排序,问题应该出在这里
char key; //键盘输入,二分搜索的关键值,即时待搜索值
printf("Please input the number U want to search:");
scanf("%c",&key);
printf("\nThe keyNum is at:%d",BinarySearch(La,(int)key)); //输出搜索结果
getchar();
}
这个程序编译运行会报错,我用跟踪执行看了。问题应该是出在快速排序函数上,函数本身没有问题,应该是“按照ASCII码排序”这个有问题。我不知道应该怎么按照ASCII排序。。请高手指点。。