End-Edge-Cloud Computing (EECC) has been applied in many fields, due to the increased popularity of smart devices. But the cooperation of end devices, edge and cloud resources is still challenge for improving service quality and resource efficiency in EECC. In this paper, we focus on the task offloading to address the challenge. We formulate the offloading problem as mixed integer nonlinear programming, and solve it by Genetic Algorithm (GA). In the GA-based offloading algorithm, each chromosome is the code of a offloading solution, and the evolution is to iteratively search the global best solution. To improve the performance of GA-based task offloading, we integrate two improvement schemes into the algorithm, which are the chromosome replacement and the task rescheduling, respectively. The chromosome replacement is to replace the chromosome of every individual by its better offspring after every crossing, which substitutes the selection operator for population evolution. The task rescheduling is rescheduling each rejected task to available resources, given offloading solution from every chromosome. Extensive experiments are conducted, and results show that our proposed algorithm can improve upto 32% user satisfaction, upto 12% resource efficiency, and upto 35.3% processing efficiency, compared with nine classical and up-to-date algorithms.