I don't think most of the partition management programs for Linux will move a partition unless there is no overlap, and you can't do that because the ~90.8G extended partition (sda2) will not fit inside the ~11.7G free space. (You can't just move swap, sda5, because of how extended partitions work).
Please read and understand the whole thing before starting. And also, make a backup. Just in case.
What you could do though, is create a a new primary partition, sda3, for the free space. Then use that as a physical volume for LVM. Use LVM to create a volume group with it, then create a logical volume on that. Copy your root filesystem over. This is probably best done from a Live CD/USB.
Then you need to get the system to boot off your logical volume. Hopefully that is as simple as changing
/etc/fstab (on the copy on the LV), chrooting to that copy, rebuilding the initramfs, and then finally running
update-grub. That'll hopefully give you a grub menu with two choices of what to boot—both the install on
/dev/sda1 and on your logical volume.
Reboot to the logical volume. Be very sure you've booted from that, not sda1 (and that the copy worked!). Now you can turn
sda1 in to a physical volume, and add it to the same volume group.
You've now got LVM combining
sda1 and your new
sda3 into one "partition." It doesn't matter that they're not contiguous on disk; you can
lvextend your logical volume (with the system running, even) to add more space to your rootfs.
The above requires a fair bit of Linux experience—you may find backing up and reinstalling easier. If you do, I recommend you use LVM when you re-install. It makes growing/shrinking partitions trivial, and growing can almost always be done with the system up.