快速排序:
void quicksort(int left, int right){
int i, j, t, temp;
if(left > right)
return;
temp = a[left]; //temp中存的就是基准数,而a是待排列的数组
i = left;
j = right;
while(i != j){
// 顺序很重要,要先从右往左找
while(a[j] >= temp && i < j)
j--;
// 再从左往右找
while(a[i] <= temp && i < j)
i++;
// 找到就交换两数的位置
if(i < j){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
//i == j 即一次交换后,把基准数和中心数交换
a[left] = a[i];
a[i] = temp;
quicksort(left, i-1);
quicksort(i+1, right);
}
用栈的思想判断回文字符串:
就是常说的先进后出
#include<stdio.h>
#include<string.h>
int main(){
char a[101], s[101];
int i, len, mid, next, top;
gets(a);
len = strlen(a);
mid = len / 2 - 1;
top = 0; //栈的初始化
//将mid前的字符依次入栈
for(i = 0; i <= mid; i++)
s[++top] = a[i];
//判断字符串的长度是奇数还是偶数,并找出需要进行字符匹配的起始下标
if(len % 2 == 0)
next = mid + 1;
else
next = mid + 2;
//开始匹配
for(i = next; i <= len - 1; i++){
if(a[i] != a[top])
break;
top--;
}
//如果top值为0则说明一一匹配
if(top == 0)
printf("YES");
else
printf("NO");
return 0;
}