自从1946年第一台计算机ENIAC诞生到现在已有半个多世界了,计算机从他诞生的那一天起就开始改变着人们的生活,他加快了世界的速度,他深入生活的各个角落,他已经成为我们现在不可或缺的工具,从开始的只有实验室或是大型企业才能拥有的庞然大物到进入普通大众的手上,表现那么生机勃勃。计算机要想的到更好的利用,要想用计算机为人类更好的服务,没有软件那是不可能的,软件就像是计算机的血液,没有了软件,计算机就是那一块废铁,其实计算机就是一堆废铁拼凑而成的是软件让他表现的似乎具有灵性一样,能够和人累交流。
著名计算机科学家N.Wirth曾经说过:
算法+数据结构=程序
这个公式不仅指出了算法与数据结构在程序设计中的重要性,还说明了数据机构与算法的关系,数据结构就是逻辑结构和存储结构,逻辑结构主要有线性结构,树性结构,复杂结构。主要的存储结构有顺序,链表,索引和散列。算法是一门艺术,是程序设计的灵魂,算法的好坏直接关系着程序的运行代价,要想充分的运用好当前的硬件环境,良好的算法和数据结构是必须的。
到计算机世界已两年有余现在完全是一菜鸟,现在刚好接触算法与数据结构,深知算法与数据结构的重要性,偶然发现CSDN是一个不错的地方,在这儿有幸拜读过几位大神的专作,要想学习还是的实践,实践是检验真理的唯一标准,这对于计算机科学来说更是如此,就想把自己的一些学习感悟和实践心得放在这儿,如过能够吸引一两位前辈前来指导,那是荣幸之至,我天生愚笨有什么不当或错误之出欢迎各位指正,在此先行谢过!欢迎各位留言!
费话不多说,还是实践才是硬道理,开篇先来一道小题:
随机产生n个整数,然后用一种算法将他们从小到大排序
#define N 10
#include <stdio.h>
#include <stdlib.h>
void quiksort (int *num, int low, int rear) {
int i,j,temp;
temp = num[low];
i = low;
j = rear;
if (i >= j)
return ;
while (i != j) {
while ((j > i) && temp <= num[j])
j--;
if (i < j)
num[i++] = num [j];
while ( (i < j) && temp >= num[i])
i ++;
if (i < j)
num[j--] = num[i];
}
num[i] = temp;
quiksort (num,low,i-1);
quiksort (num,i+1,rear);
}
int main (){
int number[N];
int i;
for (i = 0; i < N; i++) {
number[i] = rand() % 100;
printf ("\t%d",number[i]);
}
quiksort(number,0,N-1);
printf ("\n\t RAND_MAX=%d\n",RAND_MAX);
for (i = 0; i < N; i++) {
printf ("\t%d",number[i]);
}
printf ("\n");
return 0;
}
程序在linux下GCC运行通过,有优化想法的欢迎留言!